SSL证书快过期了怎么自动续签?
目前主流的免费 SSL 证书(如 Let's Encrypt)有效期仅为 90 天,手动续签不仅繁琐且极易因遗忘导致证书过期,引发网站“不安全”警告甚至业务中断。要实现自动续签,业界最成熟、最常用的方案是结合 Certbot 工具与 Nginx 插件。以下是实现全自动续签的完整指南:
第一步:安装 Certbot 及 Nginx 插件
Certbot 的 Nginx 插件能够直接与 Nginx 通信,自动处理 ACME 验证、更新 Nginx 配置并重载服务,全程无需停机。
Debian / Ubuntu 系统:
sudo apt updatesudo apt install certbot python3-certbot-nginx -y
CentOS / RHEL 系统:
sudo yum install epel-release -ysudo yum install certbot python3-certbot-nginx -y
第二步:申请证书并自动配置 Nginx
使用 Nginx 插件一键获取证书,Certbot 会自动在 Nginx 配置中添加 SSL 指令并创建定时任务:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
(注:执行此命令前,请确保 Nginx 配置文件中的 server_name 已正确指定了您的域名,且域名解析已生效。)
第三步:配置定时自动续签任务
虽然 Certbot 安装时通常会自带 systemd 定时器或 cron 任务,但为了确保万无一失,建议手动配置或检查定时任务。执行 sudo crontab -e,添加以下任务:
0 3 1 /3 certbot renew --quiet --post-hook "nginx -s reload"
参数解析:
0 3 1 /3 :每隔 3 个月的 1 号凌晨 3 点执行一次检查。
--quiet:静默模式,不输出冗余日志。
--post-hook "nginx -s reload":在证书成功续签后,自动平滑重载 Nginx 使新证书生效。
第四步:验证自动续签是否生效
配置完成后,务必进行模拟测试,以确保续签流程顺畅:
sudo certbot renew --dry-run
如果终端输出 Congratulations, all renewals succeeded,则说明自动续签配置完全正确。
💡 生产环境避坑与运维建议
零停机体验:使用 Nginx 插件模式(--nginx)或 Webroot 模式,在续期期间 Nginx 会持续提供服务,实现真正的零停机。
定期巡检日志:尽管实现了自动化,仍建议定期检查 /var/log/letsencrypt/ 目录下的日志,确认没有静默失败的情况。
备份核心文件:定期备份 /etc/letsencrypt/live/ 下的证书文件和 /etc/nginx/ 下的配置文件,以防意外损坏时能快速回滚。
监控预警机制:对于高可用要求的生产环境,建议编写简单的 Shell 脚本(利用 openssl s_client 命令)定期探测证书剩余天数,当剩余不足 30 天时自动发送邮件或钉钉告警,构建双重保险。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »