「續簽成功」和「沒事」是兩件事
一次完整的憑證更新其實有四個階段:向憑證機構申請、完成網域驗證、把新憑證部署到每一個 TLS 端點、確認使用者實際拿到的是新憑證。ACME 這類自動化工具處理的是**前兩個階段**,第三階段依設定而定,第四階段則幾乎沒有工具會自動幫你做。
問題就出在這裡:續簽日誌顯示 `success`,指的是「憑證拿到了」,不是「憑證在服務」。中間還隔著部署與重新載入,任何一步失敗都不會反映在續簽日誌上。
| 監控方式 | 抓得到 | 抓不到 |
|---|---|---|
| 日曆提醒 / 到期日清單 | 什麼時候該處理 | 續簽是否成功、是否部署 |
| ACME 工具的續簽日誌 | 憑證有沒有簽發下來 | 新憑證是否真的被供應 |
| 伺服器本機檢查憑證檔 | 這台機器上的檔案內容 | CDN、負載平衡器等其他端點 |
| 從外部實際連線檢查 | 使用者真正拿到的憑證 | (這是唯一能證明沒事的方式) |
下表把常見的四種監控方式攤開來看,重點在第三欄——每一種方式**抓不到什麼**,那才是事故發生的地方。
三種續簽成功卻仍然出事的情境
以下三種都是續簽日誌顯示成功、但使用者仍看到警告的實際情況:
- 新憑證沒推到所有端點 如果流量經過 CDN、負載平衡器或多台後端,憑證必須在每一個終止 TLS 的位置都更新。只更新了源站、CDN 節點還在供應舊憑證,是最常見的一種。而且因為只有部分節點有問題,回報會呈現「有些人說壞掉、有些人說正常」,更難判斷。
- 憑證與私鑰不匹配 憑證換了但私鑰沒同步更新(或反過來),服務會拒絕載入或直接供應失敗。這種通常在重新載入服務時就會報錯,但如果沒有人在看日誌,錯誤會被靜靜吞掉,服務繼續用記憶體裡的舊憑證跑到過期為止。
- 檔案更新了但服務沒重新載入 這是最隱蔽的一種。憑證檔案已經是新的,本機檢查也顯示正常,但 Nginx、Apache 或應用程式仍在使用啟動時載入到記憶體的舊憑證。從伺服器上看一切正常,從外面連進來卻拿到即將過期的憑證。
該監控什麼,以及什麼時候告警
從上面三種情境可以歸納出一個原則:**監控必須從外部發起,對著使用者實際會連到的位址**。從機房內部或同一台機器檢查,證明不了對外路徑上每一層都拿到了新憑證。
檢查的內容也不該只有到期日。至少應涵蓋:憑證的到期時間、憑證鏈是否完整(缺中繼憑證在某些客戶端會失敗)、供應的憑證是否與預期的網域相符,以及——如果你有多個節點——每個節點是否供應同一張憑證。
另外要確認的是告警送到哪裡。寄到一個沒人看的信箱、或只在儀表板上顯示紅點,等同於沒有告警。至少要進到團隊實際會看的管道,並且指定一個負責人。
效期縮短讓這件事從次要變成必要
過去憑證效期 398 天時,一年處理一次,就算監控不完善,出錯機率也有限。但效期已在 2026 年 3 月縮短為 200 天,2027 年將降至 100 天、2029 年降至 47 天——屆時一年要更新約八次。
每一次更新都是一次可能失敗的機會。從一年一次變成一年八次,代表**同樣的失敗率會產生八倍的事故次數**。這正是為什麼在短效期時代,監控不再是「有做比較好」,而是自動化的必要配套:自動化讓更新頻率變得可承受,監控才能確保那些自動更新真的生效了。
三個層次的實作
從最基本到最完整,可以分階段建立:
一、對外部端點做定期連線檢查
最基本的作法是排程一個檢查,對每個對外網域建立 TLS 連線,讀取實際供應的憑證並比對到期日。命令列上 `openssl s_client -connect <網域>:443 -servername <網域>` 就能看到伺服器實際回傳的憑證。把它包成排程並在門檻內告警,就已經能擋掉多數事故。
二、確認涵蓋所有 TLS 端點
列出所有會終止 TLS 的位置——源站、每個 CDN 節點、負載平衡器、API 網域、郵件伺服器。只檢查主網域會漏掉其他端點。如果 CDN 有多個節點,理想上應該從不同地區發起檢查,因為節點的憑證更新未必同步。
三、把部署驗證接進自動化流程
更完整的作法是讓續簽流程本身包含驗證步驟:簽發並部署後,自動從外部確認新憑證確實在供應,確認失敗就視為整個流程失敗並告警。這樣「續簽成功」的定義才等於「使用者拿到新憑證」,而不只是「憑證檔案下載完成」。
建立監控前該確認的三件事
在開始設定之前,先把這三項盤點清楚:
- 列出所有 TLS 端點 包含主網域、子網域、API、郵件、以及每一個 CDN 或負載平衡節點。沒列進清單的端點不會被監控,而它們同樣會讓使用者看到警告。
- 確認檢查是從外部發起 監控主機必須在您的網路之外,走使用者實際會走的路徑。從內網檢查會略過 CDN 與外部負載平衡,那正是最容易漏掉的一層。
- 確認告警有人會看到 指定接收管道與負責人。分層門檻設好之後,測試一次告警是否真的送達——很多監控是在出事那天才發現通知管道早就壞了。
小結
憑證自動化解決的是「更新太麻煩」,監控解決的是「更新有沒有真的生效」。這兩件事必須同時存在——只有自動化而沒有監控,等於把一個高頻率的流程完全交給沒人檢查的機制,而效期縮短正在讓這個頻率變成一年八次。
判斷監控是否足夠,只需要問一個問題:**它檢查的是憑證檔案,還是使用者實際拿到的東西?** 如果是前者,那它抓不到本文提到的三種情境中的任何一種。