配了自动续期脚本,三个月后证书还是过期,手动执行却能成功。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,定时任务的执行环境缺少命令路径或权限,手动在登录会话里能跑所以看不出问题。

「证书续期未执行」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。

0 3 * * * /usr/bin/certbot renew --quiet >> /var/log/cert.log 2>&1
systemctl enable --now certbot.timer

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

具体做法是,在定时任务里写绝对路径;把输出重定向到日志;用系统级定时器替代用户级任务。

最后用这个标准收尾,日志里能看到每次续期记录,证书不再过期。

作者 9823189