Ssl

如何確保 stunnel 發送所有中間 CA 證書?

  • August 27, 2015

少數電腦(但不是大多數電腦)拒絕來自我的網路伺服器的 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

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