如何確保 stunnel 發送所有中間 CA 證書?
少數電腦(但不是大多數電腦)拒絕來自我的網路伺服器的 SSL 證書。問題似乎是某些電腦拒絕 CA 證書。當 Mac OS X 10.6 未完全更新時,該問題似乎正在顯現。
根據http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com - 沒有問題。
根據http://certlogik.com/sslchecker/,沒有中間證書被發送下來。
我的證書來自 Starfield Technologies,我
sf_bundle.crt
從這裡使用:certs.godaddy.com/anonymous/repository.seam我正在通過 stunnel 在我的伺服器上使用以下內容處理 SSL
stunnel.conf
:cert = $CODEZ/admin/production/proxy/asana.pem CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt pid = client = no [<forwarded port>] accept = 443 connect = 8443
有什麼想法我可能做錯了嗎?
該
CAFile
選項將 CA 配置為用於客戶端身份驗證證書;這不是你想要的。相反,您希望在
cert
選項中製作文件以包含整個適用的證書鏈。您需要保存該文件的備份副本,然後製作一個新副本;基本上結合了這兩個文件,格式如下:-----BEGIN CERTIFICATE----- (certificate from asana.pem file pasted here) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (intermediate certificate here; copy-paste the top chunk from the bundle) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (root certificate here; copy-paste the bottom chunk from the bundle) -----END CERTIFICATE-----
這將迫使 stunnel 向客戶展示完整的證書鏈。
另一個花絮;該
openssl s_client
命令對於測試證書鏈問題和檢查您的服務如何呈現其證書非常有用。編輯: 好的..證書包的鍊是三深的,但信任鏈看起來是兩深的。有什麼不對勁。
頂級證書(“Starfield 安全證書頒發機構”)由名為“Starfield Class 2 Certification Authority”的頒發者簽名,其指紋以
ad7e1c28
.. 開頭,但捆綁包中的第二個證書與第一個證書的簽名者命名完全相同,即應該是完全相同的證書,指紋以 開頭363e4734
,到期日期早 10 年。然後第三個(根)證書是包含的中間證書的簽名者。但是這兩個證書都與第一個證書沒有任何關係!如果這沒有意義,請不要擔心。總結:草率的工作,有人嚴重放棄了建構這個證書包。那麼,最好的辦法是從成功驗證鏈的瀏覽器中以 base-64 格式導出文件,然後將它們粘貼到我從那裡列出的格式中。
由於這不是您自己的過錯造成的混亂,因此我猜測了您的 DNS 名稱並獲取了證書,我認為這應該是您需要的完整鏈:http: //pastebin.com/Lnr3WHc8