Linux 服务器实现 SSL 证书全自动续签与 Nginx 自动重载
在运维过程中,手动更新 SSL 证书不仅繁琐,而且容易因遗忘导致站点无法访问。本文将介绍如何利用 Certbot 的定时任务与 deploy-hook 钩子,实现证书的“无人值守”自动续签及 Nginx 自动重载。
1. 核心逻辑
自动化链条如下:
- Systemd Timer:每天自动检查两次证书状态。
- Certbot Renew:若证书有效期少于 30 天,自动发起续签。
- Deploy Hook:续签成功后,触发 Nginx 热重载,使新证书生效。
2. 配置步骤
第一步:设置全局自动重载钩子
我们需要告诉 Certbot,一旦证书更新成功,就执行 nginx -s reload。
编辑 Certbot 的全局配置文件:
nano /etc/letsencrypt/cli.ini
在文件中添加以下行:
# 当证书成功续签后执行的命令
deploy-hook = systemctl reload nginx
第二步:开启自动续签定时器
现代 Linux 发行版在安装 Certbot 后通常自带 Systemd 定时器。我们需要确保它已启动并设置为开机自启。
# 启动并设置开机自启
systemctl enable --now certbot-renew.timer
# 检查定时器状态
systemctl status certbot-renew.timer
如果看到 active (waiting),说明“闹钟”已经设好,系统会定期自动检查。
第三步:清理无效证书
如果服务器上有不再使用的过期域名,建议彻底删除,避免续签脚本报错:
# 列出当前所有证书
certbot certificates
# 删除不再需要的证书
certbot delete --cert-name 你的域名
3. 测试验证
在正式投入运行前,务必执行模拟演练:
certbot renew --dry-run
如果输出显示 Congratulations, all simulated renewals succeeded,说明整个自动化闭环已经打通。
4. 总结
通过 Systemd Timer + cli.ini 的组合,我们实现了 SSL 证书从申请、续签到生效的全流程自动化。这不仅提升了站点的安全性,也极大地释放了运维压力。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 asher
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

