撤銷憑證

以丹麥文檢視

以德文檢視

以西班牙文檢視

以芬蘭文檢視

以法文檢視

以希伯來文檢視

以匈牙利文檢視

以義大利文檢視

以日文檢視

以韓文檢視

以巴西葡萄牙文檢視

以俄文檢視

以瑞典文檢視

以烏克蘭文檢視

閱讀簡體中文頁面

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

上次更新時間: | 檢視所有文件

當憑證不再安全使用時,您應該撤銷它。發生這種情況的原因有幾種。例如,您可能會不小心在公開網站上分享私鑰;駭客可能會從您的伺服器複製私鑰;或者駭客可能會暫時控制您的伺服器或 DNS 設定,並利用它來驗證和發行他們持有私鑰的憑證。

當您撤銷 Let's Encrypt 憑證時,Let's Encrypt 會透過線上憑證狀態協定 (OCSP) 發佈該撤銷資訊,並且某些瀏覽器會檢查 OCSP 以查看是否應信任憑證。請注意,OCSP 有一些根本問題,因此並非所有瀏覽器都會執行此檢查。儘管如此,撤銷與遭洩漏的私鑰相對應的憑證是一項重要的實踐,並且是 Let's Encrypt 的用戶協議所要求的。

若要使用 Let's Encrypt 撤銷憑證,您將使用 ACME API,最有可能透過像 Certbot 這樣的 ACME 用戶端。您需要向 Let's Encrypt 證明您有權撤銷該憑證。有三種方法可以做到這一點:從發行憑證的帳戶、使用不同的授權帳戶,或使用憑證私鑰。

指定原因代碼

在撤銷憑證時,Let's Encrypt 的訂閱者應按如下方式選擇原因代碼

指定上述詳細說明以外的任何原因代碼的撤銷請求將被拒絕。

從發行憑證的帳戶

如果您最初發行了憑證,並且仍然可以控制用於發行憑證的帳戶,則可以使用您的帳戶憑證來撤銷它。Certbot 預設會嘗試這樣做。範例

certbot revoke --cert-path /etc/letsencrypt/archive/${YOUR_DOMAIN}/cert1.pem

使用不同的授權帳戶

如果有人在入侵您的主機或 DNS 後發行了憑證,您會在重新獲得控制權後撤銷該憑證。為了撤銷憑證,Let's Encrypt 需要確保您控制該憑證中的網域名稱(否則人們可以在未經許可的情況下撤銷彼此的憑證)!

為了驗證此控制權,Let's Encrypt 使用與驗證發行控制權相同的方法:您可以將值放在 DNS TXT 記錄中,或將檔案放在 HTTP 伺服器上。一般來說,ACME 用戶端會為您處理這些。請注意,大多數 ACME 用戶端會結合驗證和發行,因此要求驗證的唯一方法是嘗試發行。如果您不想要它,則可以撤銷產生的憑證,或者只需銷毀私鑰。

如果您想完全避免發行憑證,可以在命令列中加入一個不存在的網域名稱,這將導致發行失敗,但仍會驗證其他現有的網域名稱。範例

certbot certonly --manual --preferred-challenges=dns -d ${YOUR_DOMAIN} -d nonexistent.${YOUR_DOMAIN}

並按照指示操作。如果您希望使用 HTTP 而不是 DNS 來進行驗證,請將 --preferred-challenges 旗標替換為 --preferred-challenges=http

在您驗證了對您要撤銷憑證中的所有網域名稱的控制權之後,您可以從crt.sh下載憑證,然後繼續撤銷憑證,就像您發行了它一樣

certbot revoke --cert-path /PATH/TO/downloaded-cert.pem

使用憑證私鑰

如果您最初沒有發行憑證,但您有對應私鑰的副本,則可以使用該私鑰簽署撤銷請求來撤銷憑證。例如,如果您看到私鑰意外公開,則可以使用此方法來撤銷使用該私鑰的憑證,即使您不是最初發行這些憑證的人。

若要使用此方法,您首先需要一份 PEM 格式的私鑰副本。

然後,如果您還沒有,請下載要撤銷的憑證。Let's Encrypt 會將所有憑證記錄到憑證透明度日誌中,因此您可以從像crt.sh這樣的日誌監控器中尋找和下載憑證。搜尋符合的 SubjectPublicKeyInfo (SPKI) 欄位將會找到所有使用該私鑰的憑證。若要從私鑰中提取 SPKI 雜湊

openssl pkey -outform DER -in /PATH/TO/privkey.pem -pubout | openssl sha256

取得私鑰和憑證後,您可以像這樣撤銷憑證

certbot revoke --cert-path /PATH/TO/cert.pem --key-path /PATH/TO/privkey.pem --reason keyCompromise