chain.pem 檔案的用途是什麼?

chain.pem 檔案的用途是什麼?

關於 chaim.pem 文件的一般問題;我使用從我的主機取得的 csr,並使用 LetsEncrypt 的 Certbot 產生 https 憑證;我使用了以下命令

$ certbot certonly --manual --csr file-with-my-csr.txt

certbot產生了3個檔案0000_cert.pem、0000_chain.pem、0001_chain.pem;然後,我使用 cert.pem 檔案將憑證安裝回我的主機;一切都進行得相當順利;

我的問題是“鏈”文件的用途是什麼,因為我沒有在任何地方使用它們;它們在什麼場景下會有用?

答案1

您的 Certbot 輸出有點不尋常。您應該收到一個“fullchain.pem”文件,其中包含按正確順序排列的所有內容,而不是多個單獨的文件。

(更不用說手動安裝本身了——您必須將其自動化。)

我的問題是“鏈”文件的用途是什麼

所有WebPKI憑證授權單位至少有一個兩層系統:

  1. 安全離線儲存的根 CA 憑證對中間(核發)CA 憑證進行簽署。
  2. 線上儲存的中間 CA 對伺服器(終端實體)憑證進行簽署。

例如,這是一個圖表讓我們加密,其層次結構通常是:

Root: "DST Root CA X3" (or possibly "ISRG Root X1")
\-- Issuing: "Let's Encrypt R3"
    \-- End-entity: "letsencrypt.org"

大多數 TLS 用戶端(瀏覽器、作業系統)僅隨附預安裝證書。這樣,它們就不需要在每次 CA 更改其基礎架構時進行更新 - 僅當 CA 本身被新增或刪除時才需要更新。

但是,要驗證每個憑證的簽名,您需要擁有前一個憑證(例如,您無法僅使用根 CA 直接驗證伺服器憑證的簽章 - 兩者之間沒有直接的加密關係)。

這意味著客戶端必須擁有所有中間憑證才能完成根 CA 之間的鏈。如果缺少任何中間體,客戶端就不再有足夠的資訊來驗證其餘中間體​​。

對於 HTTPS,基本的方法是讓伺服器發送其所有鏈證書 - 因為伺服器應該已經擁有它們。

某些 Web 瀏覽器對此有替代機制 - 例如,Firefox 保留「以前見過的」中間體的緩存,而 Windows 嘗試使用憑證中的 AIA URL 下載中間體。

但並非所有瀏覽器都這樣做,重要的是,大多數非 Web TLS 用戶端根本沒有這樣的選擇。雖然不完整的鏈通常適用於 HTTPS,但它不適用於 SMTP 或 IRC 等。

然後,我使用 cert.pem 檔案將憑證安裝回我的主機;一切都進行得相當順利

最有可能的是,它只適用於一些使用者(主要是 Windows 和 Firefox),但許多其他人被排除在外。不要認為因為它可以在您自己的系統上運行,所以它也一定可以在其他人的系統上運行。

工具如SSL實驗室gnutls-cli example.com:443會警告您伺服器未發送完整鏈的情況。

然而,無論「您的主機」是什麼,也有可能主動從 AIA 資訊下載中間體(我有點懷疑 Windows 的 IIS可能正在這樣做),自動填補空白。但即使在任何地方這樣做,也是相當罕見的。

常規 Certbot 使用

通常,Certbot 將收到的憑證以「準備使用」格式儲存在/etc/letsencrypt/live資料夾中,其中 fullchain.pem 包含主機的憑證以及任何必要的父憑證。例如,在 Apache httpd 2.4.x 中,您將使用:

SSLCertificateFile    /etc/letsencrypt/live/example.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.net/privkey.pem

答案2

可以找到一個簡單的解釋這裡

首先,什麼是PEM:

PEM 是一種容器檔案格式,通常用於儲存加密金鑰。它用於許多不同的事情,因為它簡單地定義了用於儲存資料位的檔案的結構和編碼類型。

什麼是 PEM 檔:

PEM只是一個標準;它們包含文本,格式規定 PEM 檔案以...開頭

與 SSL 憑證一起使用的 Pem 檔案:

帶有 SSL 憑證的 PEM 文件

PEM 檔案用於儲存 SSL 憑證及其關聯的私密金鑰。完整的 SSL 鏈中有多個證書,它們按以下順序工作:

最終使用者證書,由證書頒發機構 (CA) 分配給您的網域名稱。這是您在 nginx 和 Apache 中用於加密 HTTPS 的檔案。最多四個可選的中間證書,由上級機構授予較小的證書機構。根證書,鏈上最高的證書,由主CA自簽名。

那什麼是chain.pem?

chain.pem 是鏈的其餘部分;在這種情況下,它只是 LetsEncrypt 的根證書

這些chain.pem文件包含您的中間證書。

安裝 SSL 憑證時,您必須安裝網站證書,也必須安裝中間憑證。有重要的。就像聲明的那樣這裡

中間憑證可作為根憑證的替代品,因為根憑證具有自己的安全層,可確保其金鑰始終無法取得。中間憑證在最終實體憑證和根憑證之間充當「信任鏈」。

這裡

由於額外的安全級別,所有主要憑證授權單位都使用中間憑證。這有助於在發生誤發或安全事件時最大限度地減少和劃分損失。您不必撤銷根證書以及它所簽署的每個證書,而只需撤銷中間證書,這只會導致從該中間證書頒發的證書組變得不可信。

相關內容