首页/AI/大模型部署与运维速查/证书到期监控:提前 30 天告警
运维监控与排障50 条

证书到期监控:提前 30 天告警

TLS 证书过期是低成本可预防的事故:用 openssl 检查剩余天数并接入监控,续期流程与部署验证写进 Runbook,避免到期当天手忙脚乱。

到期是可以提前防住的

证书过期是低成本就能预防的事故:用命令行工具检查剩余有效期并接入监控,把续期流程与部署验证写进操作手册,就不会在到期当天手忙脚乱。开了自动续期同样要监控续期任务本身,静默失败和到期一样致命。

基本信息

适用平台网关与内部服务的 TLS 证书
检查工具openssl 的 s_client 与 x509 子命令
告警阈值剩余三十天预警,七天升级告警
覆盖范围对外域名、管理域名、内部服务域名

检查剩余天数

检查剩余天数
echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null | openssl x509 -noout -enddate -subject
echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null | openssl x509 -noout -checkend $((30*24*3600)) && echo '有效期超过30天' || echo '30天内到期,需处理'

典型使用场景

  • 接入监控:把剩余天数做成指标并设阈值
  • 续期后验证:日期、域名列表、链完整性与实际生效
  • 多入口覆盖:网关域名、管理域、内部服务域都要挂
  • 自动续期巡检:确认续期任务本身没有静默失败
  • 变更核对:换证书后确认服务已加载新文件

检查项与异常

检查项正常表现异常表现
到期时间剩余天数大于阈值进入预警或升级告警区间
域名列表覆盖所有被访问的域名访问域名不在列表里
证书链链完整可校验缺中间证书导致校验失败
自动续期也要监控续期任务:静默失败与到期一样致命,任务失败必须有告警。
续期之后要验证实际生效:文件换了但服务没重载,用户看到的依然是旧证书。
把检查脚本挂到定时任务并记录结果:只有被记录下来的检查,才能形成可回溯的趋势。
检查要指向实际对外地址:只查本地文件可能漏掉边缘节点或负载均衡上尚未更新的证书。
把剩余天数写进值班手册:交接时看一眼,比等告警触发更主动。

易错点

  • 只看颁发时间不看实际链内容:缺链或域名不匹配的证书部署上去同样不可用
  • 只监控主域名:管理域名与内部域名的证书过期一样会造成访问失败
  • 续期后不重载:文件已更新但服务未加载,访问者看到的还是旧证书
  • 等到期才处理:到期当天往往同时影响多个系统,排查与恢复都很被动

数据来源与参考

  • OpenSSL 官方文档:s_client 与 x509(docs.openssl.org)
  • Let's Encrypt 官方文档:续期与到期处理
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌