CA 憑證
紀錄使用 certbot 向 Let’s Encrypt 申請網域 example.com 憑證的流程
證明網域所有權
- 憑證管理軟體 (certbot) 會向 Let’s Encrypt CA 發起申請
- 憑證管理軟體會產生一組公私鑰,並將公鑰交給 CA
- CA 會提供兩種挑戰,擇一即可,用來讓 Server 證明其確實擁有網域所有權
- 在
example.com下設定 DNS 紀錄 (dns-01) - 在
http://example.com的特定路徑底下提供 HTTP 文件 (http-01)
- 在
- 以 http-01 挑戰為例,CA 產生一組隨機數 (nonce) 交給憑證管理軟體,請它將這組隨機數使用私鑰簽名後寫入文件,並將文件放在網站上的特定路徑
- 憑證管理軟體完成後會通知 CA 進行檢查
- CA 會從網站上的特定路徑下載文件並確認內容
- 驗證通過,剛剛的公私鑰會被用作「授權金鑰對」,並開始頒發憑證
頒發憑證
- 憑證管理軟體發出憑證管理請求並用授權金鑰對簽名
- 憑證管理軟體建立一個憑證簽署請求 (Certificate Signing Request, CSR),要求 CA 頒發憑證
- CSR 通常會包含由另外一組私鑰加密的資料與其對應的公鑰,此外 CSR 會由授權金鑰進行簽名
- 當 CA 收到請求後會檢查兩組簽名
- 如果驗證成功,CA 會用 CSR 中的公鑰替
example.com的憑證簽名,再將文件回傳給憑證管理軟體
註銷憑證
- 憑證管理軟體使用授權金鑰幫助消請求簽名並發送給 CA
- CA 確認過簽名後,便將註銷消息發布到 OCSP (Online Certificate Status Protocol) 伺服器,以便讓瀏覽器等有關程式知道該憑證已被註銷
筆記
- CA 不會產生與保管私鑰,公私鑰皆由 Server 上的憑證管理軟體產生,避免惡意 CA 將私鑰另做它途