HTTPS 进程可能是健康的,而公共证书却临近过期、为错误的名字签发,或在另一条边缘上被不同地提供。一条有用的检查,是向公共端点索取它会给真实客户端的那张证书。
包含主机名
TLS 虚拟主机依赖服务器名称。把主机名作为 SNI 传入,并检视对端证书:
host=www.example.test
openssl s_client -connect "$host:443" -servername "$host" </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -fingerprint -sha256
这条命令是只读的。它不会续签任何东西,也不能证明每个中间证书都被每个客户端接受。但它确实给出为该主机名呈现的证书的 not-before、not-after、subject、issuer 与指纹。
在阈值上告警
选择能留出续期失败、DNS 问题与人工响应时间的阈值。确切数字属于服务的恢复目标;并非普通的"30 天"规则就能替代这个决定。配套的TLS 过期检查会打印过期时间,并在剩余区间低于你传入的阈值时以非零退出。
尽可能从主机外部运行检查。本地进程看到的监听器、证书文件或代理路径,可能与公共网络上的访问者不同。
来源
- Caddy Automatic HTTPS,自动 TLS 证书管理,已核验 2026-08-22。
- OpenSSL
s_client文档,SNI 与证书检查选项,已核验 2026-08-22。 - OpenSSL
x509文档,证书解析、日期与指纹,已核验 2026-08-22。