Debian系统下Nginx SSL证书续期指南(以Certbot为例)
Certbot是Let’s Encrypt官方推荐的自动化SSL证书管理工具,支持Nginx的自动配置与续期,以下是详细操作流程:
首先更新系统软件包列表,然后安装Certbot核心工具及Nginx专用插件,插件会自动处理Nginx配置的修改与重载:
sudo apt update
sudo apt install certbot python3-certbot-nginx
使用Certbot的--nginx参数自动获取证书,命令需替换为你的实际域名(支持单域名、多域名或通配符证书):
sudo certbot --nginx -d yourdomain.comsudo certbot --nginx -d domain1.com -d domain2.comsudo certbot --nginx -d *.yourdomain.comCertbot会自动完成以下操作:
① 验证域名所有权;
② 在/etc/letsencrypt/live/yourdomain.com/目录下生成证书文件(fullchain.pem为公钥链,privkey.pem为私钥);
③ 修改Nginx配置文件(如/etc/nginx/sites-available/default),添加SSL监听端口(443)及证书路径;
④ 重启Nginx服务使配置生效。
Certbot默认会创建定时任务(cron job或systemd timer),定期检查证书有效期(通常在到期前30天启动续期流程):
sudo crontab -l | grep certbot(输出类似0 */12 * * * root ... certbot renew,表示每12小时检查一次);sudo systemctl status certbot.timer(确保定时器处于“active”状态,若未运行可执行sudo systemctl start certbot.timer并sudo systemctl enable certbot.timer开启开机自启)。正式续期前,建议用--dry-run参数模拟流程,验证配置是否正确:
sudo certbot renew --dry-run
若输出“Congratulations, all renewals succeeded”则表示测试通过,可安全执行实际续期。
若测试无误,直接运行以下命令续期所有即将过期的证书:
sudo certbot renew
Certbot会自动完成证书更新,并触发Nginx重新加载(通过--deploy-hook "systemctl reload nginx"参数),无需手动操作。
sudo openssl x509 -in /etc/letsencrypt/live/yourdomain.com/fullchain.pem -noout -dates
输出中的notAfter字段应为新的到期时间(如Dec 31 23:59:59 2024 GMT)。sudo tail -f /var/log/letsencrypt/renewal.log
sudo ufw allow 'Nginx Full'开启;ssl_certificate和ssl_certificate_key指向正确的证书路径(如/etc/letsencrypt/live/yourdomain.com/fullchain.pem和/etc/letsencrypt/live/yourdomain.com/privkey.pem);/etc/letsencrypt/目录备份至安全位置,避免证书丢失。通过以上步骤,Debian系统上的Nginx SSL证书可实现自动化续期,无需人工干预,确保证书始终有效。