Ssl

多個虛擬主機的一個 IP 地址和萬用字元證書(Windows、Apache 2.4.2、OpenSSL 1.0.2e)

  • July 12, 2016

我已經搜尋和搜尋,但我找不到解決我的問題的方法,所以如果這聽起來很熟悉,我很抱歉,但我很茫然。

我有:

  • 視窗環境
  • 阿帕奇 2.4.2
  • OpenSSL 1.0.2e
  • 一個IP地址(開發箱:127.0.0.1)
  • 多個虛擬主機(www.site.co.uk、sub.site.co.uk 等)
  • 來自 Comodo 的正版域驗證萬用字元證書

我需要為我的所有虛擬主機使用萬用字元證書。

我已經使用 openssl 測試了站點/證書,並驗證它可以。

在埠 80 上使用標準 http 時,所有站點都可以正常工作。

當我啟用 httpd-ssl.conf 時,我開始遇到麻煩。

我已經看到並嘗試了幾個 http-ssl.conf 配置的範例,但都導致間歇性連接失敗,即 Firefox:“安全連接失敗”,IE11:“無法顯示此頁面”。但是,如果我刷新頁面(在每個瀏覽器中),頁面就會顯示,我可以看到證書是有效的。

根據我的閱讀,它指向 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"
   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 握手失敗

事實證明,罪魁禍首是我的 httpd.conf 文件中有這個:

AcceptFilter https none

將其註釋掉後,它解決了問題:

#AcceptFilter https none

引用自:https://serverfault.com/questions/765826