Я искал и искал, но не могу найти решение своей проблемы, поэтому извиняюсь, если это звучит знакомо, но я не понимаю.
У меня есть:
Мне нужно использовать подстановочный сертификат для всех моих виртуальных хостов.
Я протестировал сайт / сертификат с помощью openssl, и он подтвердил его.
Все сайты работают нормально при использовании стандартного http через порт 80.
Когда я включаю httpd-ssl.conf, у меня начинаются проблемы.
Я видел и пробовал несколько примеров конфигураций http-ssl.conf но все это приводит к периодическим сбоям подключения, например Firefox: " Ошибка безопасного соединения ", IE11:" Эта страница не может быть отображена ". Однако , если я обновляю страницу (в каждом браузере), страница отображается, и я можно увидеть, что сертификат действителен.
Из того, что я прочитал, он указывает на неправильную конфигурацию http-ssl.conf, но я пробовал Генератор конфигурации SSL Mozilla ( https: // mozilla .github.io / server-side-tls / ssl-config-generator / ), много ответов stackoverflow, но все равно без радости.
Это мой текущий файл httpd-ssl.conf:
Listen 443 https
SSLStrictSNIVHostCheck off
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:C:/Apache2.4/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
<VirtualHost 127.0.0.1:443>
ServerName www.site.co.uk
ServerAlias www.site.co.uk
DocumentRoot C:\WebServer\Apache2.4\htdocs\www.site.co.uk
SSLEngine On
SSLCertificateFile "C:\WebServer\Apache2.4\conf\extra\ssl\site_wildcard.crt"
SSLCertificateKeyFile "C:\WebServer\Apache2.4\conf\extra\ssl\site_wildcard.key"
SSLCertificateChainFile "C:\WebServer\Apache2.4\conf\extra\ssl\site_wildcard.ca-bundle"
SSLCACertificateFile "C:\WebServer\Apache2.4\conf\extra\ssl\addtrustexternalcaroot.crt"
</VirtualHost>
<VirtualHost 127.0.0.1:443>
ServerName sub.site.co.uk
ServerAlias sub.site.co.uk
DocumentRoot C:\WebServer\Apache2.4\htdocs\sub.site.co.uk
</VirtualHost>
После длительного тестирования мой первоначальный комментарий не помог решить проблему.
Сертификат был настроен правильно.
При запуске тестов на таких сайтах, как ssllabs.com, протокол и результаты рукопожатия будут случайным образом различаться, даже если не произошло никаких изменений конфигурации.
Тестирование / проверка с помощью OpenSSL время от времени давало правильный результат, но в большинстве случаев приводило к:
ssl handshake failed
Получается Виной всему было то, что у меня было это в моем файле httpd.conf:
AcceptFilter https none
После того, как я закомментировал это, проблема была решена:
#AcceptFilter https none
Когда я правильно интерпретирую конфигурацию, вы устанавливаете свои виртуальные хосты на локальный интерфейс. Если вы хотите правильно обслуживать страницы, вам необходимо настроить хосты на доступные IP-адреса:
<VirtualHost 0.0.0.0:443>
ServerName www.site.co.uk
ServerAlias www.site.co.uk
...
</VirtualHost>
или IP-адреса ваших серверов (например, 192.168.23.4)
<VirtualHost 192.168.23.4:443>
ServerName www.site.co.uk
ServerAlias www.site.co.uk
...
</VirtualHost>
Возможно, это решит ваши проблемы.
Обновление: My config выглядит так (система Linux)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@foo.bar
ServerName www.foo.bar.com
ServerAlias foo.bar.com
DocumentRoot /var/www/foo
SSLEngine on
SSLProtocol TLSv1
SSLHonorCipherOrder On
SSLCipherSuite RC4-SHA:HIGH:!ADH
SSLCertificateChainFile /etc/apache2/ssl/2015/intermediate.crt
SSLCertificateFile /etc/apache2/ssl/2015/public.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.open.key
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@bar.com
ServerName www.bar.com
ServerAlias bar.com
DocumentRoot /var/www/bar
SSLEngine on
SSLProtocol TLSv1
SSLHonorCipherOrder On
SSLCipherSuite RC4-SHA:HIGH:!ADH
SSLCertificateChainFile /etc/apache2/ssl/2015/intermediate.crt
SSLCertificateFile /etc/apache2/ssl/2015/public.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.open.key
...
</VirtualHost>
</IfModule>