註銷憑證

最後更新於 | 查看所有文件

請注意:英文版本(原版)在本翻譯後有改動 () 查看英文版本

當憑證相對應的私鑰不再安全時,你應該註銷憑證。 這個情況可能由很多原因造成, 例如:你不小心將私鑰公開在網路上;駭客可能進入了你的伺服器並複製私鑰;駭客可能暫時控制了你的伺服器或 DNS 設定,並頒發且驗證了他們擁有私鑰的憑證。

當你註銷 Let’s Encrypt 憑證,Let’s Encrypt 透過 Online Certificate Status Protocol (OCSP) 發布註銷憑證的訊息,有些瀏覽器會檢查 OCSP 來確定是否該信任這張憑證。 請注意,OCSP 有一些根本上的問題,因此不是所有瀏覽器都會檢查它。 將洩漏私鑰的憑證註銷非常重要,並且在 Let’s Encrypt 的使用者協議中要求使用者執行。

你需要使用 ACME API 來註銷憑證,通常使用者會使用 ACME 客戶端,例如:Certbot。 你必須向 Let’s Encrypt 證明你有權限註銷憑證, 我們有三種方法讓你註銷憑證:

使用申請頒發憑證的帳號註銷憑證

如果你擁有當初申請頒發憑證帳號的控制權,你可以透過你帳號的認證資訊, Certbot 預設使用這種方式註銷憑證, 註銷指令為:

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

使用憑證私鑰註銷憑證

如果你當初不是由你申請頒發憑證,但是你有憑證相對應的私鑰,你可以使用私鑰對註銷請求簽名。 例如:你發現私鑰不小心被公開在網路上,你就可以使用這個方法,來註銷使用那把私鑰的憑證,即使你不是當初請憑證的人。

如果你想使用這個方法註銷憑證,你需要先下載你想註銷的憑證, Let’s Encrypt 將所有的憑證透過憑證透明度紀錄下來,因此你可以從監控網站;例如:crt.sh 中找到憑證並下載它。

此外,你還需要 PEM 格式的私鑰。 當你有了這些文件後,你可以 Certbot 指令來註銷憑證:

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

使用其他帳號註銷憑證

如果有人入侵你的主機或 DNS,並頒發了憑證,當你取回控制權後,你想要註銷它所頒發的憑證憑證。 Let’s Encrypt 必須驗證你擁有憑證中網域的控制權(不然人們可以在未經許可的狀況下註銷別人的憑證)! Let’s Encrypt 使用和頒發憑證時相同的方法來驗證網域控制權:你可以加入一個 DNS TXT 紀錄放一個檔案在 HTTP 伺服器上 或提供一個特殊的 TLS 憑證。 通常 ACME 客戶端會幫你完成這些工作。 需要注意的是,大多數 ACME 客戶端會同時完成驗證和頒發憑證,因此你僅能透過頒發新憑證來完成驗證。 如果你不想要一張新的憑證,你可以在頒發後註銷它,或是直接將私鑰刪除。 如果你想要完全避免頒發一張新的憑證,你可以在申請頒發時加入一個不存在的網域名稱,這會導致憑證頒發失敗,但是還是能驗證其他存在網域名稱的控制權。 如果你想要這麼做,你可以透過 Certbot 指令:

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

如果你想用 HTTP 而不是 DNS 驗證網域名稱, 請將 --preferred-challenges=dns 替換成 --preferred-challenges=http

一旦你驗證了你想註銷的憑證中所有網域名稱的控制權,你就可以從 crt.sh 上下載並執行註銷憑證的動作;就像你成功頒發了憑證後想註銷憑證的流程一樣:

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