多个虚拟主机的一个IP地址和通配符证书(Windows,Apache 2.4.2,OpenSSL 1.0.2e)

时间:2016-03-24 09:50:22

标签: apache ssl https openssl virtualhost

我已经搜索过并搜索过但我无法找到解决问题的方法,如果这听起来很熟悉,请道歉,但我不知所措。

我有:

  • Windows环境
  • Apache 2.4.2
  • OpenSSL 1.0.2e
  • 一个IP地址(开发框:127.0.0.1)
  • 多个虚拟主机(www.site.co.uk,sub.site.co.uk等)
  • 来自Comodo的正版域验证通配符证书

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

使用标准http over 80端口时,所有网站都能正常工作。

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

我已经看过并尝试了几个http-ssl.conf配置示例,但都导致间歇性连接失败,即Firefox:" 安全连接失败",IE11:& #34; 此页面无法显示"。 但是,如果我刷新页面(在每个浏览器中),页面会显示,我可以看到证书有效。

根据我的阅读,它指出http-ssl.conf的配置不正确,但我已经尝试过Mozilla SSL配置生成器(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"
</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>

1 个答案:

答案 0 :(得分:0)

经过大量测试后,我的原始评论没有解决问题。

证书配置正确。

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

使用OpenSSL进行测试/验证,偶尔产生了正确的结果,但大部分时间都导致:

  

ssl握手失败

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

AcceptFilter https none

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

#AcceptFilter https none