用于多个虚拟主机的一个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、subsite.co.uk等)
  • 来自Comodo的正版域验证通配符证书

我需要为我的所有虚拟主机使用通配符证书。

当通过端口80使用标准http时,所有网站都可以正常工作。

当我启用httpd-ssl.conf时,我开始遇到麻烦。

我看过并尝试过http-ssl.conf配置的几个例子,但都会导致间歇性连接失败,例如Firefox:"安全连接失败",IE11:"This page cannot display(此页面无法显示)"但是如果我刷新页面(在每个浏览器中),页面就会显示,并且我可以看到证书是有效的。

根据我所读到的内容,它指出http-ssl.conf的配置不正确,但我已经尝试过Mozilla ssl配置生成器(https://mozilla.github.io/server-side-tls/ssl-config-generator/),许多堆叠的答案,但仍然没有快乐。

这是我当前的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:WebServerApache2.4htdocswww.site.co.uk
    SSLEngine On
    SSLCertificateFile "C:WebServerApache2.4confextrasslsite_wildcard.crt"
    SSLCertificateKeyFile "C:WebServerApache2.4confextrasslsite_wildcard.key"
    SSLCertificateChainFile "C:WebServerApache2.4confextrasslsite_wildcard.ca-bundle"
</VirtualHost>
<VirtualHost 127.0.0.1:443>
    ServerName  sub.site.co.uk
    ServerAlias sub.site.co.uk
    DocumentRoot    C:WebServerApache2.4htdocssub.site.co.uk
</VirtualHost>

经过大量测试,我最初的评论并没有解决问题。

证书配置正确。

在ssllabs.com等网站上运行测试时,即使没有更改配置,协议和握手结果也会随机不同。

使用OpenSSL进行测试/验证,偶尔会产生正确的结果,但大多数情况下会产生:

ssl握手失败

事实证明,罪魁祸首是我在httpd.conf文件中有这个:

AcceptFilter https none

在评论之后,它解决了问题:

#AcceptFilter https none

最新更新