運作方式

以英文顯示

以丹麥文查看

以德文查看

以希臘文查看

以西班牙文查看

以芬蘭文查看

以法文查看

切換至希伯來文

以匈牙利文檢視

以義大利文檢視

以日文顯示

以韓文檢視

以葡萄牙文 (巴西) 檢視

以俄文檢視

以僧伽羅文查看

以塞爾維亞文閱讀

以瑞典文顯示

以泰文檢視

以烏克蘭文檢視

以越南文檢視

閱讀簡體中文頁面

使用正體中文閲讀本網頁。

上次更新時間:

Let’s Encrypt 和 ACME 協定的目標是讓設定 HTTPS 伺服器變得可能,並自動取得瀏覽器信任的憑證,而無需任何人工干預。這是透過在網頁伺服器上執行憑證管理代理程式來完成的。

為了瞭解這項技術的運作方式,我們來逐步說明如何使用支援 Let’s Encrypt 的憑證管理代理程式設定 https://example.com/

這個過程有兩個步驟。首先,代理程式會向 CA 證明網頁伺服器控制網域。然後,代理程式可以請求、更新和撤銷該網域的憑證。

網域驗證

Let’s Encrypt 使用公開金鑰識別伺服器管理員。代理程式軟體第一次與 Let’s Encrypt 互動時,它會產生新的金鑰組,並向 Let’s Encrypt CA 證明伺服器控制一個或多個網域。這類似於傳統 CA 建立帳戶並將網域新增至該帳戶的流程。

為了啟動流程,代理程式會詢問 Let’s Encrypt CA,它需要做些什麼才能證明它控制 example.com。Let’s Encrypt CA 會查看正在請求的網域名稱,並發布一組或多組挑戰。這些是代理程式可以證明控制網域的不同方式。例如,CA 可能會讓代理程式選擇以下其中一種:

除了挑戰之外,Let’s Encrypt CA 還會提供一個 nonce,代理程式必須使用其私密金鑰組簽署該 nonce,以證明其控制該金鑰組。

Requesting challenges to validate example.com

代理程式軟體會完成其中一組提供的挑戰。假設它可以完成上述第二個任務:它會在 http://example.com 網站上的指定路徑建立一個檔案。代理程式也會使用其私密金鑰簽署提供的 nonce。一旦代理程式完成這些步驟,它就會通知 CA,它已準備好完成驗證。

然後,CA 的工作是從多個網路角度檢查挑戰是否已滿足。CA 會驗證 nonce 上的簽名,並嘗試從網頁伺服器下載檔案,並確保它具有預期的內容。

Requesting authorization to act for example.com

如果 nonce 上的簽名有效,且挑戰通過,則以公開金鑰識別的代理程式即獲授權可對 example.com 執行憑證管理。我們稱代理程式使用的金鑰組為 example.com 的「授權金鑰組」。

憑證發行和撤銷

一旦代理程式擁有授權金鑰組,請求、更新和撤銷憑證就很簡單了,只需傳送憑證管理訊息並使用授權金鑰組簽署即可。

為了取得網域的憑證,代理程式會建構 PKCS#10 憑證簽署請求,要求 Let’s Encrypt CA 為具有指定公開金鑰的 example.com 發行憑證。如同往常一樣,CSR 包括由 CSR 中公開金鑰對應的私密金鑰所做的簽名。代理程式還會使用 example.com 的授權金鑰簽署整個 CSR,以便 Let’s Encrypt CA 知道它已獲得授權。

當 Let’s Encrypt CA 收到請求時,它會驗證這兩個簽名。如果一切順利,它會針對 example.com 發行憑證,其中包含來自 CSR 的公開金鑰,並將其傳回給代理程式。CA 也會將憑證提交至許多公開憑證透明度 (CT) 記錄檔。請參閱此處以了解更多詳細資訊。

Requesting a certificate for example.com

撤銷的運作方式類似。代理程式會使用 example.com 授權的金鑰組簽署撤銷請求,而 Let’s Encrypt CA 會驗證該請求是否已獲得授權。如果已獲得授權,它會將撤銷資訊發布到正常的撤銷管道 (即 OCSP),以便瀏覽器等依賴方可以知道他們不應接受已撤銷的憑證。

Requesting revocation of a certificate for example.com