证书过期这种事故,难看的不是技术,是时间点。往往发生在周末、假期、或者刚做完活动的时候。

而且它完全可以提前一个月发现。

三件事要分开看

到期时间。 最常见,也最容易查。免费证书 90 天,很多人设了自动续期,但续期失败没告警,到期那天才发现。

证书链完整性。 浏览器能开,不代表链完整。部分安卓机、小程序、API 客户端会因为中间证书缺失直接握手失败。

覆盖范围。 主域有证书,api.、static.、m. 这些子域可能漏了,或者是另一张快过期的证书。

为什么自动续期也会失败

文件验证的路径被改、DNS 验证的 TXT 记录被清、ACME 客户端进程挂了、80 端口被占用导致 HTTP 验证失败。

这些都不报错,只会在到期前一天默默失败。所以「配了自动续期」不等于「不会过期」,还得有到期监控。

怎么做到提前发现

最简单的方式是定期跑一次证书检测,看到期天数。剩 30 天开始留意,剩 15 天必须处理。

多域名、多子域的站,列个清单挨个测,别只测主站。漏测一个子域,一样出事故。

还有一个隐蔽问题

证书换了,但服务没重载。配置文件里已经是新证书,Nginx 还在用内存里的旧证书。到期那天照样报错,而你去查文件,发现是新的。

换完证书执行 nginx -s reload,然后用检测工具确认线上实际返回的有效期。

顺手看一眼协议

证书检测通常也会告诉你支持哪些 TLS 版本。还在开 TLS 1.0、1.1 的,该关了,主流浏览器已经不认。

用 SSL 检测 跑一次,到期时间、证书链、加密套件一页看完,比手工 openssl 快。