30 天,这是个比较稳妥的提前量。

为什么是 30 天

留出足够的缓冲,去处理「续期失败」这件事。

续期不是每次都能一次成功。域名验证可能失败、DNS 可能还没生效、80 端口可能被临时关掉、CA 可能限流。如果卡在最后一天才发现,你连排查的时间都没有。

提前 30 天,意味着你有将近一个月的时间慢慢修。哪怕第一次失败,也还有好几次机会。

为什么不更早

部分 CA 对续期有窗口限制,比如 Let's Encrypt 在证书剩余 30 天内才允许续。

太早发起请求,可能直接被拒,白白浪费一次尝试。

自动化才是根本

手动续期迟早会忘。正确做法是配好自动任务:

  • certbot renew 加进 cron 或 systemd timer,每天跑一次
  • 续期成功后自动 reload Nginx,否则新证书不会生效
  • 加一条到期监控,剩余 15 天还没续上就告警

注意那个 reload。很多人续期成功了,但服务没重载,还在用内存里的旧证书,直到过期才发现。

节假日是真事

每年都有站点在春节、国庆期间证书过期。值班的人少,处理链路长,一个小问题能拖成几小时故障。

所以到期日落在长假前后的,提前手动续掉,别赌自动化不出问题。

续完要验证

续期成功后,用 SSL 检测跑一遍,确认新证书已经生效、有效期正确、证书链完整。

别只看「续期成功」的日志,那只能说明证书文件换了,不代表线上已经在用。