過去,HTTPS 意味著又貴又麻煩的憑證。Let's Encrypt 改變了這一點:它是免費的,而且從簽發到續期都能完全自動化。以下從防禦者的視角來看它如何運作。
運作原理:自動證明網域控制權(ACME)
傳統憑證意味著申請、提交身分文件、等待——全部靠人工。Let's Encrypt 用 ACME(Automatic Certificate Management Environment) 取代了這一切,這是一個把整個流程化為機器對機器步驟的協定。
關鍵在於:它只驗證對網域的控制權(網域驗證,DV)。它不審核公司是否合法存在,正因如此整個流程才輕量到能完全自動化。加密本身並不比付費憑證來得弱。
90 天效期,是因為續期本來就該自動化
Let's Encrypt 憑證的效期為 90 天。這個短窗口是刻意的。
限制金鑰外洩造成的損害
萬一伺服器的私鑰外洩了,短效期憑證會縮短它能被濫用的期間——而且即使撤銷有所延遲,它也會自行過期。
讓自動續期成為預設
90 天用手動續期並不實際,於是維運者必須自動化——這把整個產業推向了「憑證是會自動輪替的東西」。實務上,續期工具會在到期前約 30 天開始嘗試。
所以真正的工作是監控
自動續期可能在沒人察覺的情況下停止:cron 壞了、權限變了、網域檢核不再通過。如果你沒注意到,90 天後它就過期了。防禦性的習慣就是監控續期是否成功與剩餘天數。
本站觀點:我們自己也這樣跑(自動 TLS)
本站跑在 Caddy 這款 Web 伺服器上,它只要把網域指向它,就會自動簽發並續期 Let's Encrypt 憑證(幾乎沒有任何憑證設定)。「不必去操心憑證」正是目標:人工經手的地方越少,因忘記更換而過期的事故就越少。
如果你改用 cron 跑 certbot,安全的做法是去監控那個 cron 是否真的還在運作,而不只是相信它還在。
效期正在縮短(截至 2026 年 10 月的時程)
90 天是現在的標準,但 Let's Encrypt 已宣布將分階段縮短效期。由瀏覽器廠商與憑證頒發機構組成的業界團體 CA/Browser Forum,也已決定自 2026 年 3 月起分階段縮短瀏覽器信任憑證的最長效期,在 2029 年 3 月達到 47 天。
| 時間 | 變化 |
|---|---|
| 截至 2026 年 10 月 | 效期 90 天 |
| 自 2026 年 5 月 13 日起 | 選用的 tlsserver 設定檔提供 45 天憑證 |
| 自 2027 年 2 月 10 日起 | 預設(classic 設定檔)改為 64 天;網域驗證的重複使用期間縮短為 10 天 |
| 自 2028 年 2 月 16 日起 | 預設改為 45 天;網域驗證的重複使用期間縮短為 7 小時 |
效期約 6 天(160 小時)的 shortlived 設定檔也已自 2026 年 1 月起正式提供。IP 位址憑證只以這種短效期憑證的形式簽發。
實務上的重點是:不要把續期間隔寫死成「每 60 天」之類。Let's Encrypt 建議使用支援 ARI(ACME Renewal Information,由 CA 告訴用戶端何時續期)的用戶端;不支援 ARI 時,就在效期過了三分之二時續期。以固定天數執行的 cron 工作,在效期縮短後就會開始造成過期。
2025 年結束的服務:OCSP 與到期通知信
Let's Encrypt 在 2025 年停止了兩項服務。如果你照著舊的文章或設定操作,請特別留意。
- OCSP(每次確認憑證是否已被撤銷):OCSP URL 已於 2025 年 5 月 7 日從憑證中移除,回應伺服器於 8 月 6 日關閉。撤銷檢查現在改用 CRL(已撤銷憑證的清單)。原因之一是隱私:使用 OCSP 時,CA 可以得知哪個 IP 位址正在造訪哪個網站。
- 到期通知信:已於 2025 年 6 月 4 日停止。過去在到期日逼近時會收到電子郵件,現在不會了。你需要自己的到期監控。
第一大事故:續期中斷,接著過期
HTTPS 最常見的問題不是攻擊,而是憑證過期。一旦過期,瀏覽器會跳出全頁警告,訪客幾乎一定離開。原因幾乎總是「續期自動化壞掉了,卻沒人發現」。
正因如此,你應該有辦法定期查看自己憑證的到期日。本站的 網站安全稽核 會在你已驗證擁有的網站上,與其他檢查項目一併檢查 TLS 憑證(剩餘天數、到期日、過時的協定)。把續期自動化,再從外部驗證那個自動化仍在運作。兩個習慣並用,幾乎能完全杜絕過期事故。
網域驗證方式(挑戰)的比較
ACME 提供三種證明網域控制權的方式。請選擇適合你環境的方式。
| 方式 | 放置什麼 | 萬用字元憑證 | 適合的情況 |
|---|---|---|---|
| HTTP-01 | 在 Web 伺服器的固定路徑放一個檔案 | 不行 | 可從 80 埠連線的一般 Web 伺服器 |
| DNS-01 | 在 DNS 放一筆 TXT 記錄 | 可以 | 需要 *.example.com,或伺服器無法公開連線 |
| TLS-ALPN-01 | 在連往 443 埠的 TLS 連線上回應 | 不行 | 大型主機服務商與反向代理 |
自動化 DNS-01,代表要把 DNS API 金鑰放在伺服器上。一旦該金鑰外洩,別人就能變更你網域的記錄,所以請選擇可以把金鑰限制在 TXT 記錄的 DNS 服務商,並讓金鑰存放的地方越少越好。
如何檢查自己的網站
在瀏覽器中確認簽發者與到期日
確認續期真的有在執行
certbot certificates 會顯示到期日,certbot renew --dry-run 會測試續期。在 systemd 主機上,確認 systemctl list-timers 中有 certbot 的計時器。Caddy 會在紀錄中記下憑證的簽發與續期。找出你沒有申請的憑證
限制可以為你簽發的 CA
從外部監控剩餘天數
案例:2021 年根憑證到期
憑證是透過一條以受信任根憑證為終點的鏈來驗證的。Let's Encrypt 的憑證最初是透過另一個 CA 的根憑證(DST Root CA X3)取得信任,而該根憑證於 2021 年 9 月 30 日到期。
從那天起,不信任 Let's Encrypt 自有根憑證(ISRG Root X1)的舊裝置與軟體,開始在使用 Let's Encrypt 的網站上顯示憑證警告(舊版 Android 裝置則因特別的安排而得以繼續運作)。網站的憑證明明正確續期了,使用舊裝置的使用者卻再也連不上。
如果你營運的是舊裝置會連線的 API 或系統,請關注 Let's Encrypt 的公告,為中繼憑證與根憑證的變更做好準備。Let's Encrypt 建議不要在設定中寫死中繼憑證,而是使用 ACME 用戶端收到的憑證鏈。
接下來閱讀
- 從事件學習:Heartbleed(一個讓大量伺服器私鑰暴露於風險中的 TLS/OpenSSL 漏洞)
- 檢查你自己的網站:網站安全稽核(TLS 憑證、標頭、外露檔案,一份報告全包)
- 基本對策:給獨立開發者的安全基線檢查清單
出處(一手資料)
- Let's Encrypt 官方部落格(2025 年 12 月 2 日,將效期縮短為 45 天的計畫)— letsencrypt.org(64 天與 45 天的日期、驗證重複使用期間、建議使用 ARI)
- Let's Encrypt 官方部落格(2026 年 1 月 15 日,6 天憑證與 IP 位址憑證正式提供)— letsencrypt.org
- Let's Encrypt 官方部落格(2024 年 12 月 5 日,結束 OCSP)— letsencrypt.org(移除 OCSP URL 與關閉回應伺服器的日期)
- Let's Encrypt 官方部落格(2025 年 1 月 22 日,結束到期通知信)— letsencrypt.org
- Let's Encrypt「Challenge Types」— letsencrypt.org
- Let's Encrypt「Integration Guide」— letsencrypt.org(續期時機、不要寫死中繼憑證)
- Let's Encrypt「DST Root CA X3 Expiration (September 2021)」— letsencrypt.org
- CA/Browser Forum「Ballot SC081v3」(2025 年 4 月 11 日通過)— cabforum.org(公開憑證的最長效期在 2029 年 3 月達到 47 天)