先盘点,再到期
证书事故通常是盘点失败。团队知道公网证书,却忘了内部服务、Webhook 端点或固定证书的移动客户端。从主机名和负责人清单开始,而不是从某台服务器上的文件清单开始。记录签发者、密钥类型、到期时间和续期自动化方式。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
既要从外网检查,也要从内网检查。内网探针可能信任公共客户端不信任的私有 CA。
先重叠,再排空
在服务器支持时同时安装新旧证书,然后优雅重载。已有 keep-alive 连接可能继续使用旧证书直到关闭,这在重叠期内可以接受。不要一次性重启所有实例。如果是密钥泄露,跳过重叠并立即撤销旧密钥。
自动化并演练
ACME 客户端可以自动续期,但没有监控的自动化只会静默失败。在 CI 或计划任务中运行 certbot renew --dry-run,对续期失败告警,并把剩余天数作为指标。通过企业 CA 签发的证书,要么自动化申请与部署,要么记录手工步骤和负责人。
验证证书链
证书未过期仍可能因缺少中间证书、SAN 缺失或旧客户端不支持密钥类型而失败。验证完整链和主机名,并测试代表性客户端。在新链确认前保留旧证书以便回滚。