Debian

信任已在另一台主機上信任的 x509 證書

  • July 13, 2020

我有兩台主機,一台使用 Debian Buster,一台使用 CentOS 7。

我想從他們兩個通過 SSL 連接到 SMTP 伺服器。但是,我只能在 CentOS 上這樣做:

中央作業系統:

$ openssl s_client -connect smtp.server.com:587
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = server.com
verify return:1
---
Certificate chain
0 s:/CN=server.com
  i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
...

德比安:

$ openssl s_client -connect smtp.server.com:587
CONNECTED(00000003)
depth=0 CN = server.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = server.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:CN = server.com
  i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
---

問題似乎在於 Debian 主機缺少 Let’s Encrypt 證書或不信任它。

如何將信任從一台機器“轉移”到另一台機器?即我如何確保他們都信任相同的證書?

安裝 CA 證書包

首先,您需要確認您的 Debian 機器上是否安裝了 Root CA 證書包。

跑:

$ apt list --installed 2>/dev/null | grep ca-certificates

如果輸出[installed]在該行的末尾,那麼它已安裝,但包缺少根 CA 證書 - 跳轉到下一部分。

如果該命令沒有輸出任何內容,那麼您需要使用以下命令安裝 CA 證書:

$ sudo apt install ca-certificates

此時,再次測試您的命令。

如果仍然失敗,則需要手動添加 Root CA 證書,如下所示:

將根 CA 證書添加到信任錨儲存

如果您閱讀此處,您會看到正確的 Root 是Let’s Encrypt 的 ISRG Root X1。Let’s Encrypt 發行 CA ( Let’s Encrypt Authority X3 ) 已由上述簽名,並且已由 Identrust 的 Root CA 交叉簽名,以提高與舊系統的兼容性。這是您的 CentOS 機器使用的後者,但明年到期,因此不值得在您的 Debian 機器中安裝。

要讓您的 Debian 機器正常工作,請從上面的連結下載Let’s Encrypt ISRG Root X1ISRG_Root_X1.pem並將其保存到您的 Debian 系統中(例如)/usr/local/share/ca-certificates/

在繼續下一步之前,請確保您確認我提供的連結是真實的(Let’s Encrypt 站點)和安全的 (HTTPS),而不是我試圖讓您安裝偽造的根 CA 證書。

現在執行:

$sudo update-ca-certificates

將新證書添加到您的信任庫。

如果你真的想使用 Identrust Root CA 證書,你可以從這裡下載。這是頁面上的最後一個連結。

再次嘗試您的命令,希望它可以工作。

錯誤配置的 SMTP 伺服器

如果仍然失敗,您需要檢查 SMTP 伺服器是否正在發送證書鏈作為 TLS 握手的一部分。很多時候,伺服器管理員只配置最終實體證書並省略 CA 鏈。添加-showcerts到 Debian 框上的命令並檢查是否顯示了所有證書(以 PEM 格式)。

如果它們失去,請與伺服器管理員交談並要求他們(很好地)正確配置他們的伺服器。

引用自:https://unix.stackexchange.com/questions/598274