Правильная настройка многодоменного SSL-сертификата в качестве VirtualHosts на нескольких IP-адресах.

В настоящее время у меня определены следующие VirtualHosts.

NameVirtualHost *:80
Listen *:80

<IfModule mod_ssl.c>
Listen *:443
</IfModule>

<VirtualHost *:80>
--various directives for www--
</VirtualHost>

<VirtualHost *:443>
--same directives as *:80--
SSLEngine on
SSLCertificateFile /path/to/public.crt
SSLCertificateKeyFile /path/to/private.key
SSLCACertificateFile /path/to/intermediate.crt
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
</VirtualHost>

<VirtualHost 192.168.1.102:80>
--various directives for another subdomain--
</VirtualHost>

<VirtualHost 192.168.1.103:80>
--various directives for another subdomain--
</VirtualHost>

<VirtualHost 192.168.1.104:80>
--various directives for another subdomain--
</VirtualHost>

<VirtualHost 192.168.1.105:80>
--various directives for another subdomain--
</VirtualHost>

<VirtualHost 192.168.1.106:443>
--various directives for another subdomain--
SSLEngine on
SSLCertificateFile /path/self/signed/certificate.pem
--same ciphers and other settings as *:443--
</VirtualHost>

<VirtualHost 192.168.1.107:80>
--various directives for another subdomain--
</VirtualHost>

<VirtualHost 192.168.1.109:80>
--various directives for another subdomain--
</VirtualHost>

Прямо сейчас все работает как положено. Основной домен www *:80 и защищенное соединение на *:443 работает с рейтингом B на SSLLabs.com

Это дает следующие ошибки:

  1. Этот сервер поддерживает слабые параметры обмена ключами Диффи-Хеллмана (DH). Оценка ограничена до B.
  2. Сервер не поддерживает Forward Secrecy со ссылочными браузерами.

Я поместил пользовательские параметры DH после моего открытого ключа, но параметры DH по-прежнему выдают ошибку. Я не уверен, как исправить ошибку Forward Secrecy.

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

Я добавил новый VirtualHost:

<VirtualHost 192.168.1.109:443>
--Copied all directives from 192.168.1.109:80--
--Copied all SSL settings from *:443--
</VirtualHost>

Конфигурация кажется проверенной, когда я запускаю configtest. Apache не выдает мне сообщений об ошибках, которые кажутся актуальными при перезапуске службы (всегда выдаются некоторые ошибки DNS, но это нормально, так как IP-адреса, определенные в VirtualHosts, являются IP-адресами DMZd, а не публичными IP-адресами). Однако ни один из моих сайтов не отвечает, и apache2 показывает, что он остановлен. Когда я удаляю новый VirtualHost, сервер возвращается обратно без проблем.

Что я делаю не так с моей конфигурацией? Может кто-то указать мне верное направление?

1 ответ

Решение

Проблема, очевидно, заключалась в ошибках ServerName. Они хороши, если на каждом IP-адресе только 1 хост, но добавляется второй IP-адрес, хотя он находится на новом порту и, следовательно, имеет новое имя VirtualHost, и этого недостаточно для предотвращения взрыва Apache.

Я добавил имя_сервера для каждого VirtualHost, хотя в прошлом они нам не нужны, и теперь новый VirtualHost устанавливается без проблем.

Другие вопросы по тегам