首页/安全/加密与证书速查/证书到期监控接入

证书到期监控接入

把证书到期检查做成计划任务并接入告警,覆盖域名探测、文件扫描与资产库对照三条路径;建议设置到期前 30/14/7 天的多级阈值,并记录每张证书的实际部署位置。

加密与证书速查安全更新于 2026-10-13

为什么要做到期监控

证书过期是最常见的线上事故来源之一,而它完全可以提前发现。做法是把到期检查做成计划任务并接入告警,同时覆盖三条路径:公网域名探测、服务器本地证书文件扫描、资产清单对照。阈值建议分级,例如到期前 30 天预警、14 天提醒、7 天升级,并记录每张证书的实际部署位置,告警出现时才能直接找到负责人和机器。

基本信息

监控对象公网域名证书、内部双向认证证书、私有 CA 签发的证书
阈值设计30 天预警、14 天提醒、7 天升级
采集方式命令行探测、本地文件扫描、资产清单对照
记录字段主体、签发者、SAN、到期时间、部署路径、负责人
告警通道邮件、群机器人或工单系统,任选其一但要可追溯

典型使用场景

  • 对外站点巡检:每天探测生产域名,临近到期立即通知
  • 内部服务盘点:扫描服务器上的证书文件,覆盖不经公网的服务
  • 资产对照:用证书清单与资产库比对,发现未纳管的证书
  • 轮换排期:根据到期时间分布提前安排批量换证窗口
  • 事故复盘:用监控记录确认告警是否及时、处置是否到位

批量探测域名证书

批量探测域名证书
# 逐个域名探测,输出证书失效时间
for h in example.com api.example.com; do
  echo -n $h:
  echo | openssl s_client -connect $h:443 -servername $h 2>/dev/null | openssl x509 -noout -enddate
done
# 只关心剩余天数时,可以用 checkend 直接判断
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -checkend 1209600

扫描本机证书文件

扫描本机证书文件
find /etc/ssl /etc/nginx -type f \( -name '*.pem' -o -name '*.crt' \) 2>/dev/null | while read f; do
  e=$(openssl x509 -in $f -noout -enddate 2>/dev/null) && echo $f $e
done

三条采集路径对照

路径覆盖范围局限
域名探测实际对外生效的证书只能看到公网可达的服务
文件扫描服务器上存放的证书文件扫不到未部署或已替换的旧文件
资产库对照登记在册的全部证书依赖登记及时,漏登记就是盲区
监控输出中保留主体、签发者、SAN 与部署路径,告警时就能直接定位负责人与机器,不必再人工翻配置。
阈值要结合轮换周期:证书有效期只有 90 天时,30 天预警意味着只剩三分之一时间,留给审批与发布刚好;有效期很长时可以把首个阈值往后放,减少噪音。
告警必须有人闭环:只发到公共群里的消息最容易无人处理,建议指定值班人或自动开单,并在换证完成后手动关闭对应告警。

易错点

  • 只监控主域名,遗漏 SAN 中的其它名称与内部域名
  • 探测固定 IP 绕过 CDN,拿到的不是真实对外证书
  • 只监控公网域名,内部服务与私有 CA 证书到期时才发现
  • 告警只发公共群且无人认领,消息被淹没后照样发生事故
  • 资产登记与实际脱节,扫描发现的证书不在清单里也无人跟进

数据来源与参考

  • OpenSSL 官方文档(s_client / x509)
  • Prometheus blackbox_exporter 文档(probe_ssl_earliest_cert_expiry)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌