「續簽成功」和「沒事」是兩件事

一次完整的憑證更新其實有四個階段:向憑證機構申請、完成網域驗證、把新憑證部署到每一個 TLS 端點、確認使用者實際拿到的是新憑證。ACME 這類自動化工具處理的是**前兩個階段**,第三階段依設定而定,第四階段則幾乎沒有工具會自動幫你做。

問題就出在這裡:續簽日誌顯示 `success`,指的是「憑證拿到了」,不是「憑證在服務」。中間還隔著部署與重新載入,任何一步失敗都不會反映在續簽日誌上。

監控方式 抓得到 抓不到
日曆提醒 / 到期日清單 什麼時候該處理 續簽是否成功、是否部署
ACME 工具的續簽日誌 憑證有沒有簽發下來 新憑證是否真的被供應
伺服器本機檢查憑證檔 這台機器上的檔案內容 CDN、負載平衡器等其他端點
從外部實際連線檢查 使用者真正拿到的憑證 (這是唯一能證明沒事的方式)
四種監控方式的涵蓋範圍。只有最後一種能證明使用者端沒問題。

下表把常見的四種監控方式攤開來看,重點在第三欄——每一種方式**抓不到什麼**,那才是事故發生的地方。

三種續簽成功卻仍然出事的情境

以下三種都是續簽日誌顯示成功、但使用者仍看到警告的實際情況:

  1. 新憑證沒推到所有端點 如果流量經過 CDN、負載平衡器或多台後端,憑證必須在每一個終止 TLS 的位置都更新。只更新了源站、CDN 節點還在供應舊憑證,是最常見的一種。而且因為只有部分節點有問題,回報會呈現「有些人說壞掉、有些人說正常」,更難判斷。
  2. 憑證與私鑰不匹配 憑證換了但私鑰沒同步更新(或反過來),服務會拒絕載入或直接供應失敗。這種通常在重新載入服務時就會報錯,但如果沒有人在看日誌,錯誤會被靜靜吞掉,服務繼續用記憶體裡的舊憑證跑到過期為止。
  3. 檔案更新了但服務沒重新載入 這是最隱蔽的一種。憑證檔案已經是新的,本機檢查也顯示正常,但 Nginx、Apache 或應用程式仍在使用啟動時載入到記憶體的舊憑證。從伺服器上看一切正常,從外面連進來卻拿到即將過期的憑證。

該監控什麼,以及什麼時候告警

從上面三種情境可以歸納出一個原則:**監控必須從外部發起,對著使用者實際會連到的位址**。從機房內部或同一台機器檢查,證明不了對外路徑上每一層都拿到了新憑證。

檢查的內容也不該只有到期日。至少應涵蓋:憑證的到期時間、憑證鏈是否完整(缺中繼憑證在某些客戶端會失敗)、供應的憑證是否與預期的網域相符,以及——如果你有多個節點——每個節點是否供應同一張憑證。

另外要確認的是告警送到哪裡。寄到一個沒人看的信箱、或只在儀表板上顯示紅點,等同於沒有告警。至少要進到團隊實際會看的管道,並且指定一個負責人。

效期縮短讓這件事從次要變成必要

過去憑證效期 398 天時,一年處理一次,就算監控不完善,出錯機率也有限。但效期已在 2026 年 3 月縮短為 200 天,2027 年將降至 100 天、2029 年降至 47 天——屆時一年要更新約八次。

每一次更新都是一次可能失敗的機會。從一年一次變成一年八次,代表**同樣的失敗率會產生八倍的事故次數**。這正是為什麼在短效期時代,監控不再是「有做比較好」,而是自動化的必要配套:自動化讓更新頻率變得可承受,監控才能確保那些自動更新真的生效了。

三個層次的實作

從最基本到最完整,可以分階段建立:

一、對外部端點做定期連線檢查

最基本的作法是排程一個檢查,對每個對外網域建立 TLS 連線,讀取實際供應的憑證並比對到期日。命令列上 `openssl s_client -connect <網域>:443 -servername <網域>` 就能看到伺服器實際回傳的憑證。把它包成排程並在門檻內告警,就已經能擋掉多數事故。

二、確認涵蓋所有 TLS 端點

列出所有會終止 TLS 的位置——源站、每個 CDN 節點、負載平衡器、API 網域、郵件伺服器。只檢查主網域會漏掉其他端點。如果 CDN 有多個節點,理想上應該從不同地區發起檢查,因為節點的憑證更新未必同步。

三、把部署驗證接進自動化流程

更完整的作法是讓續簽流程本身包含驗證步驟:簽發並部署後,自動從外部確認新憑證確實在供應,確認失敗就視為整個流程失敗並告警。這樣「續簽成功」的定義才等於「使用者拿到新憑證」,而不只是「憑證檔案下載完成」。

建立監控前該確認的三件事

在開始設定之前,先把這三項盤點清楚:

  1. 列出所有 TLS 端點 包含主網域、子網域、API、郵件、以及每一個 CDN 或負載平衡節點。沒列進清單的端點不會被監控,而它們同樣會讓使用者看到警告。
  2. 確認檢查是從外部發起 監控主機必須在您的網路之外,走使用者實際會走的路徑。從內網檢查會略過 CDN 與外部負載平衡,那正是最容易漏掉的一層。
  3. 確認告警有人會看到 指定接收管道與負責人。分層門檻設好之後,測試一次告警是否真的送達——很多監控是在出事那天才發現通知管道早就壞了。

小結

憑證自動化解決的是「更新太麻煩」,監控解決的是「更新有沒有真的生效」。這兩件事必須同時存在——只有自動化而沒有監控,等於把一個高頻率的流程完全交給沒人檢查的機制,而效期縮短正在讓這個頻率變成一年八次。

判斷監控是否足夠,只需要問一個問題:**它檢查的是憑證檔案,還是使用者實際拿到的東西?** 如果是前者,那它抓不到本文提到的三種情境中的任何一種。

參考資料