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

Как предотвратить доступ к https: // из доменов без сертификата?

У меня есть эта установка

Server version: Apache/2.2.22 (Ubuntu)
OpenSSL 1.0.1c 10 May 2012

Один IP-адрес с подключенными к нему несколькими доменами. Для example1.com У меня есть подписанный SSL-сертификат, поэтому example1.com доступен через https://secure.example1.com

Это также верно для example2.com (подписано действующим сертификатом и доступно через https://secure.example2.com)

Тем не мение, example3.com НЕ имеет привязанных к нему SSL-сертификатов и не должен быть доступен через https (SSL-порт 443). Но, когда пользователь переходит в https://example3.com отображается предупреждение. В Chrome это выглядит так

Вы попытались связаться с example3.com, но вместо этого вы достигли сервера, идентифицирующего себя как secure.example1.com. Это может быть вызвано неправильной конфигурацией на сервере или чем-то более серьезным. Злоумышленник в вашей сети может попытаться заставить вас посетить поддельную (и потенциально опасную) версию example3.com.

Если вы проигнорируете предупреждение, пользователю будет показано содержимое secure.example1.com

Настройка VirtualHost выглядит так

<VirtualHost *:443>
        ServerName secure.example1.com
        DocumentRoot /var/www/blahblah
        SSLEngine on
        SSLCertificateFile /blahblah.crt
        SSLCertificateKeyFile /blahblah.key
        SSLCertificateChainFile /blahblah.pem
</VirtualHost>

<VirtualHost *:443>
        ServerName secure.example2.com
        DocumentRoot /var/www/blahblah
        SSLEngine on
        SSLCertificateFile /blahblah.crt
        SSLCertificateKeyFile /blahblah.key
        SSLCertificateChainFile /blahblah.pem
</VirtualHost>

<VirtualHost *:80>
        ServerName example3.com
        DocumentRoot /var/www/blahblah
</VirtualHost>

Как я могу предотвратить такое поведение?

Домены без SSL не должны использовать этот IP. Даже для нескольких доменов с поддержкой SSL вы полагаетесь на клиентов для беспроблемной реализации SNI, что может быть, а может и не быть безопасным предположением.

Проблема в том, что до того, как Apache сможет перенаправить браузер на HTTP, подтверждение SSL должно пройти успешно, поэтому, если вы не можете предоставить действительный сертификат для домена, клиенты всегда будут заявлять об ошибках SSL.

редактировать: Несколько доменов SSL будут работать без проблем, если вы используете только один сертификат с соответствующими SAN (многодоменный сертификат). Однако проблема с доменами без SSL остается.

Как уже писал Коен ван дер Райт, вам следует проверить SF на похожие вопросы и внимательно прочитать ответы.

  apache2ctl -S 

выдает вам приказ vhost "казнь"

так что ваш example1.com является первым определенным доменом port: 443, тогда будет использоваться этот.

Вместо этого вы можете сделать ф.э. самоподписанный сертификат и проинформируйте пользователя, что этот домен сейчас не имеет https-соединения, или выполните rewrite_rule, которое перенаправляет трафик из https://domain3.com к http://domain3.com. Обратите внимание, что для этого потребуется «недействительный» сертификат и проинформирует пользователя.

Если вы не используете SNI, вам дополнительно потребуется как минимум 1 IP на каждый сертификат.