更新Nginx SSL证书的核心是通过Certbot工具完成证书续期,并确保Nginx加载新证书。以下是详细操作流程:
Certbot是管理Let’s Encrypt证书的自动化工具,Nginx插件可自动修改Nginx配置。若未安装,执行以下命令安装:
sudo apt update
sudo apt install certbot python3-certbot-nginx
使用Certbot的renew命令更新证书,--dry-run参数用于模拟续期过程(无实际修改,用于测试):
sudo certbot renew --dry-run
若输出Congratulations, all renewals succeeded,说明续期成功。若需实际更新,去掉--dry-run参数:
sudo certbot renew
Certbot默认会在安装时创建定时任务(通常位于/etc/cron.d/certbot或/etc/systemd/system/certbot.timer),定期检查证书有效期(默认每60天续期一次)。无需额外配置,但可通过以下命令验证定时任务是否存在:
systemctl list-timers | grep certbot
若未找到定时任务,可手动添加cron任务(每天凌晨2点检查):
sudo crontab -e
添加以下内容:
0 2 * * * /usr/bin/certbot renew --quiet
证书续期后,Certbot通常会自动修改Nginx配置文件(位于/etc/nginx/sites-available/或/etc/nginx/conf.d/),但建议手动检查以下关键路径是否正确:
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;确认配置无误后,测试Nginx语法并重载服务:
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx # 重载Nginx使更改生效
/etc/letsencrypt/live/yourdomain.com/目录下,其中fullchain.pem是完整的证书链(包含服务器证书和中间证书),privkey.pem是私钥。server块(通常位于/etc/nginx/sites-available/yourdomain.com):server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
修改后需再次测试并重载Nginx。通过以上步骤,即可完成Ubuntu环境下Nginx SSL证书的更新,并确保证书长期有效。