萬用字元 SSL 在瀏覽器/作業系統/電腦之間的行為不一致
我在 Media Temples Dedicated Virtual 4.0 託管的域上安裝了萬用字元 SSL 證書。這是我試圖通過 SSL 提供的一個簡單範例頁面:https ://ssltest.bblhosted.com/
現在,我問過的其他人(大約 4 或 5 人)說該網站在他們的電腦上執行良好,在各種瀏覽器中執行良好,沒有安全警告。但是,我的電腦上的結果不一致。
這是我的結果。我正在執行最新的 OSX,通過 Parallels 執行 Windows 7,以及所有瀏覽器的最新版本:
**OSX / Firefox:**掛鎖顯示,沒問題。 **Windows 7 / Firefox:**警告 - “此連接不受信任”
**OSX / Chrome:**警告 - “此站點的安全性不受信任!” **Windows 7 / Chrome:**綠色掛鎖 - ‘由 RappidSSL CA 驗證的身份’。
**OSX / Opera:**警告 - ‘此伺服器的證書鏈不完整,簽名者未註冊。接受?’ **Windows 7 / Opera:**掛鎖顯示,“安全連接,乾淨的安全記錄”。
**OSX / Safari:**警告 - ‘Safari 無法驗證網站的身份’
**Windows 7 / IE:**掛鎖顯示“此伺服器連接已加密”。
我的問題是,任何人都可以提供有關可能導致此問題的原因的任何見解,或者如何解決它?會不會只是我的電腦出了問題,如果是,怎麼辦?特別奇怪的是,對於相同的瀏覽器,我在 OSX 和 Windows 7 上得到了相反的結果。
即使您可以評論您正在使用的瀏覽器/作業系統,以及它是否適合您,那也很棒!謝謝。
_______ 更新:
Rapid SSL 的第一封電子郵件給了我一份證書和一份 CA 證書。我已對其進行了更新,以包括 Christopher Perrin 連結到的兩個 CA證書。
我已經使用Rapid SSL 的工具測試了 ssltest.bblhosted.com,它說一切都設置正確(儘管該工具在我更改 CA 證書之前也成功了)。
這個工具給出了一個錯誤 - 並說它很可能是一個中間證書問題。
我正在通過 Plesk 更新證書,並且確實收到警告“警告:CA 證書未簽署證書。”,儘管根據此,您通常可以忽略該警告。
SSL 適用於https://www.bblhosted.com/>、<https://bblhosted.com/>和<https://anythinggoeshere.bblhosted.com/ - 它僅不適用於已明確設置的子域。
在 var/log/httpd/error_log 中,我有一堆錯誤,例如:“RSA 伺服器證書萬用字元 CommonName (CN) `*.bblhosted.com’ 與伺服器名稱不匹配!?”
在 ssl_error_log 中,我有一堆錯誤,例如:“
$$ warn $$RSA 伺服器證書是 CA 證書 (BasicConstraints: CA == TRUE !?)" 我沒有足夠的經驗知道他們的意思。我明天繼續戰鬥!
好的,克里斯托弗·佩林(Christopher Perrin)讓我走上了正軌
SSLCertificateChainFile
——謝謝。這是細節,以防他們幫助別人。我正在使用 Plesk 11,顯然我所指的路徑對於其他人來說會有所不同。當我創建子域 ssltest.bblhosted.com 時,Plesk 在
/var/www/vhosts/ssltest.bblhosted.com/conf/13558069200.18494000_httpd.include
(或類似)處創建一個文件。該文件有效地服務於 vhost.conf 文件(或 vhost_ssl.conf),除了它是由 plesk 自動生成的,並且每次您通過 Plesk 更改設置時都會自動覆蓋。該文件包含以下行:
SSLCertificateFile /usr/local/psa/var/certificates/cert-Eq8jue
它顯示了在哪裡可以找到我的 SSL 證書。它不包含指示在哪裡可以找到 CA 證書的行。所以它應該包含以下行:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
(顯然路徑應該指向您自己的 CA 證書)。據我所知,不包括這一行的事實是 Plesk 中的一個錯誤。您可以將該行添加到該文件中,直接在該
SSLCertificateFile
行下方,然後重新啟動 Apache,它會起作用 - 但是,如果您這樣做,則下次您在 Plesk 中更改該域的設置時,該文件將被覆蓋,並且您將失去您的更改。在文件的頂部,Plesk 給出以下警告:#ATTENTION! # #DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, #SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. # #IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES: #/var/www/vhosts/ssltest.bblhosted.com/conf/vhost.conf #/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
所以,我創建
/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
並添加了單行:SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
除了那一行之外,您不需要添加任何其他內容。據我所知,所有其他設置仍將取自 Plesk 生成的預設 httpd.include 文件。
現在,您必須告訴 Plesk 查找 vhost_ssl.conf 文件,因為預設情況下它不會 - 即使您已經創建了它!通過 SSH 登錄並執行以下命令來執行此操作:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
這將告訴 Plesk 為所有域查找 vhost.conf(和 vhost_ssl.conf)。如果需要,您也可以只為單個域執行此操作。
最後,重新啟動 Apache,SSL 就可以工作了!
請注意,如果您添加另一個子域,則需要再次執行整個過程,包括執行終端命令以使 Plesk 為您的新域或子域查找 vhost.conf 和 vhost_ssl.conf。
您的證書鏈可能不完整。您可能需要添加RapidSSL CA Bundle。到你的證書。
在 Apache 中,您可以選擇
SSLCertificateChainFile
. 將此設置為您保存RapidSSL CA Bundle的路徑。另一種選擇是通過像這樣將鏈證書附加到您的證書來將它們添加到您自己的證書中
cat mycert.pem RapidSSL_CA_bundle.pem >> mychainedcert.pem
這應該可以解決問題。
解釋
您顯然是在 RapidSSL 購買的證書。RapidSSL 雖然不是您的瀏覽器信任的 CA 之一。這沒有問題,因為您的瀏覽器信任 GeoTrust 而 GeoTrust 信任 RapidSSL。您只需向瀏覽器顯示證明這一點的證書。這就是為什麼您需要包含鏈文件的原因。