Один IP-адрес и сертификат подстановки для нескольких виртуальных хостов (Windows, Apache 2.4.2, OpenSSL 1.0.2e)

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

У меня есть:

  • Среда Windows
  • Apache 2.4.2
  • OpenSSL 1.0.2e
  • один IP-адрес (поле разработки: 127.0.0.1)
  • несколько виртуальных хостов (www.site.co.uk, sub.site.co.uk и т. Д. .)
  • Подлинный подтвержденный доменом подстановочный сертификат от Comodo

Мне нужно использовать подстановочный сертификат для всех моих виртуальных хостов.

Я протестировал сайт / сертификат с помощью 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>
2
задан 24 March 2016 в 12:53
2 ответа

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

Сертификат был настроен правильно.

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

Тестирование / проверка с помощью OpenSSL время от времени давало правильный результат, но в большинстве случаев приводило к:

ssl handshake failed

Получается Виной всему было то, что у меня было это в моем файле httpd.conf:

AcceptFilter https none

После того, как я закомментировал это, проблема была решена:

#AcceptFilter https none
1
ответ дан 3 December 2019 в 12:41

Когда я правильно интерпретирую конфигурацию, вы устанавливаете свои виртуальные хосты на локальный интерфейс. Если вы хотите правильно обслуживать страницы, вам необходимо настроить хосты на доступные 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>
0
ответ дан 3 December 2019 в 12:41

Теги

Похожие вопросы