文档首页> 技术教程> 证书自动续期配置与到期监控

证书自动续期配置与到期监控

发布时间:2026-02-05 08:44        更新时间:2026-02-05 11:53
证书装完不代表一劳永逸。Let's Encrypt 的证书只有 90 天有效期,靠人记日期一定会翻车,续期必须交给定时任务,另外再配一道独立的到期监控兜底。 确认续期定时器 certbot 签发的证书,Ubuntu 安装时自带 systemd 定时器,确认方法: systemctl list-timers | grep certbot 现有证书清单和到期时间用 certbot certificates 一条命令看全,几本证书、挂哪些域名、还剩多少天一目了然,续期季来临前先看这里。CentOS 部分版本只有 cron,手动补一条: echo "0 3 * * * root /usr/bin/certbot renew --quiet" > /etc/cron.d/certbot-renew acme.sh 用户不需要额外配置,安装脚本已写入 cron,crontab -l 能看到即可。 先做一次演练 定时器存在不等于真能续成功,先跑一次演练: certbot renew --dry-run 输出带 success 字样才算数。演练走的是测试环境,不消耗正式配额,可以放心反复跑,每次调整过 Web 服务之后都把它当必做步骤。失败的高频原因有两个:webroot 路径和当初签发时不一致,或者域名已改走 CDN 导致 80 端口验证不通过,按日志提示逐项处理。 续期后自动重载 续期只是换了证书文件,Nginx 不会自己重新加载,需要配一个 deploy hook: mkdir -p /etc/letsencrypt/renewal-hooks/deploy cat > /etc/letsencrypt/renewal-hooks/deploy/reload.sh <<'EOF' #!/bin/bash logger "certbot renew: reloading nginx" nginx -t && systemctl reload nginx EOF chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload.sh 每次续期成功这个脚本会被自动调用,语法检查通过才重载,不会把错误配置带上线。脚本里的 logger 一行会往系统日志留痕,事后能用 grep certbot /var/log/messages 确认 hook 是否真的跑过。 到期监控兜底 定时器和 hook 都可能静默失效,比如机器时间错乱、cron 服务挂了。所以用一条命令直接读线上证书的真实到期时间: echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate 把这条命令放进拨测脚本,每天跑一次,剩余有效期低于 14 天就提醒——这个阈值正好覆盖两轮续期周期,一轮失败还有补救时间。提醒走什么渠道都行,关键是值班的人能看见,而不是等出事之后翻日志才发现。多域名站点把域名列表放进循环逐个检查。续期和监控是两条独立的线,各管各的,别只押一边,两条都常年在线,证书这件事才算真正省心。