返回资讯

best-practices

把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界

提出一条具体可执行的证书运维规范:所有证书在剩余有效期不足 30 天时统一轮换,并说明它的适用前提、与证书有效期、自动化工具的配合方式,以及哪些场景不适合照抄这条线。

把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界

凌晨两点的告警里,最常见的一种是“证书明天过期”。翻记录,证书是去年某天凌晨手动续的,当时顺手,现在没人记得流程。这类问题的根子通常不是技术,而是轮换没有成文的节奏:什么时候该续、谁来续、续完怎么确认,全靠记忆。

这里给一条可以写进运维文档的规范,再讲清它的边界。

规范内容

一句话:任何生产证书,剩余有效期小于等于 30 天时即触发重新签发,签发并部署成功后记录一次审计日志;连续两次自动轮换失败即升级为人工处理,人工处理的最晚期限是剩余 7 天。

拆开看有三个要点:

为什么选 30 天而不是别的数

太短(比如剩余 7 天才续)会把任何一次验证故障变成紧急事故:DNS 服务商 API 抖动、CA 侧限流,都可能让你没有时间重试。太长(比如签发后立刻续)则浪费 CA 的额度,也增加无意义的变更面。30 天对 90 天有效期的证书是一个顺手的折中:留足故障窗口,又不至于频繁折腾。

这套节奏之所以成立,前提是验证方式可靠且自动化。HTTP-01 要求 80 端口可达且路径不被 CDN 或 WAF 拦截,在多节点、多 CDN 的拓扑里经常绊脚;DNS-01 用 TXT 记录验证,绕开入站流量的问题,更适合自动化场景。

在 CertbotX 中实践

CertbotX 支持 DNS-01,并且可以把验证用的 _acme-challenge 记录通过 CNAME 委托到一个独立区域,主区域的 DNS 权限就不用交给签发机器。签发后它会在到期前自动重新签发,并按配置把新证书部署到 Agent、EdgeOne 或 CDN,每次部署都有记录可查。把上面那条规范落进去,大致是:设好轮换触发点,盯住部署记录,把连续失败接到告警渠道,30 天线之前的部分交给工具,线之后的人工兜底留给人。

适用边界

这条规范不是万能的,几个不适合照抄的场景:

另外一个小坑:轮换节奏定了之后,别忘了证书的私钥是否一起换。只换证书不换私钥,等于一直用同一把钥匙开新锁,轮换的安全收益会打折。

核验用资料

把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界:an orderly certificate lifecycle with verification, issuance, deployment, observation, and safe replacement
把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界:an orderly certificate lifecycle with verification, issuance, deployment, observation, and safe replacement
把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界:DNS ownership verification using a delegated CNAME, shown as a precise handoff between two controlled zones
把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界:DNS ownership verification using a delegated CNAME, shown as a precise handoff between two controlled zones
把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界:an ACME request being validated at separate stations and turned into a new deployable artifact while private key material remains at its origin
把证书轮换固定在到期前 30 天:一条能落地的运维规范及其边界:an ACME request being validated at separate stations and turned into a new deployable artifact while private key material remains at its origin