sec_error_unknown_issuer 但僅適用於 Firefox 和 IE6
我最近在我的網站上更新了 SSL 證書,雖然最初似乎證書已正確安裝,但我震驚地發現幾個小時前 HTTPS 連接不再通過某些瀏覽器和版本正確驗證。
它目前使用以下瀏覽器驗證 OK:
- 網際網路瀏覽器 8
- 網際網路瀏覽器 9
- Google瀏覽器 8
- 歌劇 11
- Firefox 3.6.21(在 Windows 2000 上)
但它不能通過以下方式正確驗證:
- Firefox 3.6.13(在 Windows XP 上)
- Firefox 6.01(在 Windows 7 上)
- Internet Explorer 6(在 Windows 200 上)
證書的證書路徑為
GeoTrust Global CA > RapidSSL CA > secure.mydomain.com
.什麼可以解釋這個問題?這是安裝問題嗎?瀏覽器問題?證書問題?
我該如何解決這個問題?
我遇到了同樣的問題 - 購買了一個基本的 SSL 證書(來自 Network Solutions),將其安裝在 nginx 下,它在 Opera 和 IE 中都可以正常工作 - 但不是 Firefox 3.6.12。這就是我解決問題的方法。請注意,我對我的 VPS 具有 root/shell 訪問權限,我不知道您是否這樣做(至少這可能會為您的提供商指明正確的方向)。
找到解決方案的第一步是使用Qualys(根據this other answer)。它告訴我鏈條不完整。
其次,我使用OpenSSL進行測試/調試。假設您具有 shell 訪問權限,您可以執行以下命令(q或 CTRL-C 斷開連接):
openssl s_client -connect mysite.com:443
您可能會看到錯誤“無法獲得本地頒發者證書”。這也是一種在不執行 Firefox 的情況下在 shell 中測試它何時工作的方法。
SSL 證書鏈
某些瀏覽器可能會抱怨由知名證書頒發機構簽署的證書,而其他瀏覽器可能會毫無問題地接受該證書。發生這種情況是因為頒發機構已使用中間證書籤署伺服器證書,該中間證書不存在於隨特定瀏覽器分發的知名可信證書頒發機構的證書庫中。在這種情況下,權威機構提供了一系列鍊式證書,這些證書應連接到簽名的伺服器證書。伺服器證書必須出現在組合文件中的鍊式證書之前
Nginx 配置
就我而言,我從 Network Solutions 獲得了三個文件 -
mysite.com.crt
、AddTrustExternalCARoot.crt
和NetworkSolutionsDVServerCA.crt
. 沒有捆綁文件,但可以從其他證書創建一個。經過反複試驗,我發現我需要的是:$ cat mysite.com.crt NetworkSolutionsDVServerCA.crt > mysite.com.chain.crt
最後一步是使用新文件重新配置我的 nginx 伺服器:
server { listen 443; ssl on; ssl_certificate /etc/ssl/certs/mysite.com.chain.crt; ssl_certificate_key /etc/ssl/private/mysite.com.key; server_name mysite.com; # and so on }
拿到bundle中正確的證書後,重啟nginx,
openssl
沒有報錯,火狐拿到頁面沒問題,Qualys報鏈有效。阿帕奇配置
由於您正在執行 Apache,因此您(或您的提供商)需要使用正確的文件位置為 SSL 配置它,其中之一是缺少的中間鏈文件:
<VirtualHost 192.168.0.1:443> DocumentRoot /var/www/html2 ServerName www.yourdomain.com SSLEngine on SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/DigiCertCA.crt </VirtualHost>