Назад | Перейти на главную страницу

SSL-соединение не работает с публичным IP-адресом

РЕДАКТИРОВАТЬ: проблема решена, это действительно был брандмауэр сервера, который блокировал порт 443. Теперь все работает.

Я пытаюсь установить самозаверяющий сертификат SSL на сервере apache, работающем в ubuntu. Я разрешил использование модуля SSL, отредактировал default-ssl.conf и поставил тот же IP-адрес, что и ServerName, который я поставил как CommonName при создании самозаверяющего сертификата. Я изменил расположение файлов .crt и .key в файле. Затем я включил файл default-ssl.conf и перезапустил apache.

Я проверял 5 раз каждый шаг, поэтому уверен, что не ошибся.

Когда я пытаюсь получить доступ https://ip_address он не загружается. Проверил, открыт ли порт 443. Есть ли способ узнать, где находится проблема? Я просто не знаю, что попробовать дальше. Я захожу на сервер по ssh.

вот мой текущий default-ssl.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin admin-server@amatiscontrols.com
        ServerName 54.82.28.171:443

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinksAllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on

        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile    /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

мой ports.conf:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    ErrorLog /var/log/apache2/ssl_access.log
    LogLevel debug
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Я также отредактировал / etc / hosts и / etc / hostname и добавил IP-адрес

Я просмотрел /var/log/apache2/error.log, есть две строки, которые могут указывать на проблему:

RSA server certificate is a CA certificate
RSA server certificate CommonName (CN) `54.82.28.171' does NOT match server name!?

Я действительно изо всех сил пытаюсь понять, в чем проблема. я уверен, что это что-то глупое, но я не понимаю что!

РЕДАКТИРОВАТЬ :

Я просто пробовал openssl s_client -connect 54.82.28.171:443, я получил:

connect: Connection timed out
connect:errno=110

Я думаю, это означает, что в соединении отказано, то есть порт 443 не открыт? Когда я сказал, что не загружается, я имел в виду, что браузер сказал «веб-страница недоступна». когда я пытаюсь получить доступ к той же странице без https, загружается моя страница index.html

В противном случае вывод apache2ctl -S:

/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server 54.82.28.171 (/etc/apache2/sites-enabled/default-ssl:3)
         port 443 namevhost 54.82.28.171 (/etc/apache2/sites-enabled/default-ssl:3)
*:80                   is a NameVirtualHost
         default server dash.amatiscontrols.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost dash.amatiscontrols.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost amatisdash.com (/etc/apache2/sites-enabled/amatisdash.com:1)
Syntax OK

EDIT: на сервере есть брандмауэр ... без открытого 443, поэтому он должен все объяснить. Вот только я могу открыть порт сам, и придется подождать, чтобы убедиться. В любом случае, благодарю Вас!

Спасибо

Может быть полезно разобраться, что на самом деле происходит при попытке SSL. Время раскрыть openssl!

Взгляните на следующую страницу руководства по openssl: https://www.openssl.org/docs/apps/s_client.html

В частности, просмотрите ссылку в разделе «Примечания» (просто прокрутите вниз). Как говорится, вы можете попробовать следующее:

openssl s_client -connect имя сервера: 443

Это может предоставить вам дополнительную информацию о том, что именно не удается.

Что касается записей журнала ошибок - первая строка любопытна ... Интересно, возможно, использование сертификата не совсем правильное ... Вторая строка выглядит более часто, хотя обычно это вызвано подключением на основе IP, когда сертификат выдается на полное доменное имя ... Я бы начал с тестов соединения openssl и посмотрел, сможете ли вы собрать больше информации.

И последнее, но не менее важное ... вы сказали, что страница не загружается, вы получаете сообщение об ошибке или просто отображает пустую страницу? Просто убедитесь, что вы действительно что-то представляете на странице :)

ServerName 54.82.28.171:443 не действительный название сервера поскольку это IP-адрес и порт, а не полное доменное имя, это должно быть что-то вроде ServerName www.example.com.

Во-вторых, ваше имя сервера должно совпадать с общим именем в сертификате SSL, независимо от того, что вы используете IP-адрес. 54.82.28.171:443 != 54.82.28.171 .

Третий - это сообщение об ошибке, которое, похоже, заключается в том, что ваш общедоступный сертификат вовсе не самоподписанный сертификат, а сертификат CA. Это может быть связано с тем, что обычное имя - это не полное доменное имя, а IP-адрес, я не уверен.
Вы можете преобразовать текущий сертификат /etc/apache2/ssl/apache.crt из кодировки PEM он должен быть немного более разборчивым:

openssl x509 -in apache.crt -noout -text

Результат, который включает что-то вроде:

        X509v3 Basic Constraints: 
            CA:TRUE

Это вероятная причина того, что Aapche считает сертификат сертификатом CA, что не обязательно неверно с самоподписанным сертификатом IIRC.