SSL 证书到期不是只有浏览器出现一条警告那么简单。电商结算、用户登录、移动应用 API、合作伙伴回调和内部管理入口都可能因为同一个证书问题失败。更麻烦的是,自动续期任务可能已经显示成功,但负载均衡器的一台节点仍返回旧证书,某个 SAN 主机没有被续期,或者证书替换后服务没有重新加载。可靠的监控不只计算 notAfter 到今天还剩多少天,而是持续回答三个问题:监控了哪些真实端点,端点返回的证书是否适合该主机,异常发生后谁能在截止时间前采取行动。
先建立完整的主机清单
监控台账的起点不应只有一个主域名。根据 DNS 的 A、AAAA、CNAME 和 MX 记录、证书 SAN、应用配置、API 文档、回调地址以及外部链接,收集 www、api、登录、支付、图片、下载、测试和合作伙伴访问的主机名。每个主机记录端口、环境、业务重要性、负责人和最后确认时间。发现主机后先确认它是否属于当前业务,不要把每个历史名称都永久纳入高优先级监控。中文域名还应同时保存显示形式和实际使用的 ASCII 形式,避免重复检查或检查错对象。
- 规范化主机名、端口和环境
- notBefore、notAfter 和剩余天数
- 证书的 CN、SAN 和通配符范围
- 签发者、公开密钥和证书链
- TLS 连接、撤销信息和检查时间
- 业务负责人、技术负责人和应急联系方式
到期日之外检查证书身份
证书没有过期,不等于它适合当前主机。客户端会校验证书中的名称,SAN 里必须包含访问的 DNS 名称,通配符也只能覆盖规定的层级。检查时应区分名称不匹配、证书过期、链不完整、无法建立 TLS 连接和撤销状态异常。证书链中的中间证书如果没有正确返回,部分客户端可能失败,另一些客户端却因为本地缓存而看起来正常。将所有问题合并成一个 SSL 错误,会让工单被派给错误的团队。
{
"hostname": "api.example.cn",
"checked_at": "2026-09-14T09:00:00Z",
"days_remaining": 37,
"name_match": true,
"chain": "valid",
"tls": "reachable",
"status": "warning",
"owner": "platform-team"
}
设计到期阈值和通知状态
不要把 30 天前的一次提醒当作完整策略。可以根据证书类型、审批时间和发布窗口设置计划、警告、紧急三个阶段,例如在 60 天时确认负责人和续期方式,30 天时创建作业,14 天时升级给业务责任人,7 天时触发应急流程。数值只是示例,关键是每个阈值都要有明确动作。通知内容应该包含主机、当前期限、剩余天数、名称匹配、链状态、证据时间、工单和下一步,而不是只发一句“证书即将过期”。
告警去重同样重要。相同的状态每天重复发送,会让真正的紧急事件被忽略。可以在状态首次出现、跨过阈值、证书更新后发现新期限、异常从 unknown 变为 confirmed 时创建事件。名称不匹配和链错误即使期限很远也可能需要高优先级,DNS 超时则应标记为暂时无法确认,而不是直接判断证书失效。
验证自动续期而不是相信任务日志
Let's Encrypt 中文集成指南建议通过 ACME Renewal Information 获取续期时间,并在不支持 ARI 时按照证书生命周期提前续期。无论使用哪种方法,申请任务成功和用户拿到新证书是两个事实。续期后应从外部连接每个主机,保存新的序列号或指纹、期限、SAN、链和 HTTP 响应。多节点服务要从不同节点或观测位置检查,避免只验证到已经更新的那一台。证书替换后的服务重载、缓存刷新和回调验证也应成为验收步骤。
如果使用 HSTS,证书错误会更快变成无法绕过的连接故障,因此上线前要确认新证书和所有子域名都准备好。不要为了减少告警而把检查频率降到无法覆盖证书生命周期的程度,也不要为了抢先续期而无限重试。自动化客户端有速率限制和失败条件,重试要有上限,并把无法确认的结果交给人工处理。
把监控和 DNS、域名资产联系起来
许多证书事故其实从资产遗漏开始:子公司拥有独立主机,旧 API 仍被客户使用,或服务结束后 DNS 记录没有删除。每月把证书 SAN、DNS 主机和域名资产台账做一次比对,确认新增、消失和负责人缺失的项目。域名注册期限、DNS 变化和证书期限是不同的观察维度,不要用其中一个的正常状态替代另一个。对测试环境也要记录用途,因为合作方或开发团队可能在关键时间依赖它。
批量接入 API 时保留未知状态
当主机数从几个增加到几十或几百个时,人工浏览器检查难以重复。批量调用时,输入可以包含主机、端口、环境和负责人,输出则保存期限、剩余天数、名称匹配、SAN、链、连接状态、检查时间和失败原因。网络超时、DNS 失败、证书过期和主机名不匹配应有不同枚举。某个字段取得不到时,其他已确认字段不应被丢弃,unknown 也不应被改写成安全。引入前要核对响应字段、使用上限、缓存时间和重试规则。
DomScan 的 SSL 证书检查和 SSL 评分适合单个主机的复核,SSL 证书有效期 API 适合把多个端点纳入统一台账,域名 Watchlist 则能帮助团队持续管理关键域名。接入到工单或资产系统时,保留原始检查时间和状态变化,不要只存一个总分。总分可以帮助排序,却不能告诉维修人员究竟是名称、链、期限还是连接出了问题。
监控自身也要有健康检查
一个没有按计划执行的监控任务不能被展示为“没有异常”。记录计划时间、开始时间、完成时间、观测位置、返回状态和数据新鲜度。当所有主机突然同时变成 unknown、结果时间长时间不更新、请求量异常下降或失败比例突然上升时,先检查监控流程本身。只有把采集失败和目标失败分开,团队才不会在真正的证书事故发生时误以为检查一直正常。
证书监控的结果应该以提前修复为目标,而不是以发送多少告警为目标。每月审查资产覆盖率、负责人缺失、误报、续期后的验收成功率、unknown 的平均处理时间和通知到达率。随着公开证书有效期缩短,稳定的资产清单、可比较的外部检查和清晰的责任链,比一条复杂但无法验证的自动化规则更有价值。