在Debian系统上更新Nginx SSL证书的完整步骤
在替换证书前,务必备份现有证书及私钥文件,避免操作失误导致服务中断。
sudo cp /etc/ssl/certs/your_domain_name.crt /etc/ssl/certs/your_domain_name.crt.bak
sudo cp /etc/ssl/private/your_domain_name.key /etc/ssl/private/your_domain_name.key.bak
Certbot是Debian系统上管理Let’s Encrypt证书的主流工具,需先确保其已安装最新版本:
sudo apt update
sudo apt install certbot python3-certbot-nginx
若证书通过Certbot获取,可直接运行以下命令自动更新:
sudo certbot --nginx -d your_domain_name [-d additional_domain.com]
-d
参数指定域名(支持多个域名,用空格分隔);若证书由其他CA颁发,需手动替换证书文件并调整Nginx配置:
# 将新证书复制到指定目录
sudo cp /path/to/new_certificate.crt /etc/ssl/certs/your_domain_name.crt
sudo cp /path/to/new_private.key /etc/ssl/private/your_domain_name.key
# 设置私钥文件权限(必须为600,防止未授权访问)
sudo chmod 600 /etc/ssl/private/your_domain_name.key
更新证书后,需检查Nginx配置语法是否正确,避免因配置错误导致服务崩溃:
sudo nginx -t
若输出显示syntax is ok
,则执行以下命令重新加载Nginx,使新证书生效:
sudo systemctl reload nginx
通过浏览器访问网站,点击地址栏的安全锁图标,查看证书有效期及详细信息,确认新证书已成功应用。
或使用OpenSSL命令行工具验证:
openssl s_client -connect your_domain_name:443 -servername your_domain_name | openssl x509 -noout -dates
输出中的notAfter
字段即为证书到期时间。
Let’s Encrypt证书有效期为90天,需定期续签。Certbot默认会添加定时任务(通常位于/etc/cron.d/certbot
),但可手动添加更严格的检查:
sudo crontab -e
添加以下内容(每天凌晨2点检查并自动续签):
0 2 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
--quiet
:减少输出信息;--post-hook
:续签成功后自动重新加载Nginx,无需手动操作。测试自动更新(避免生产环境出错):
sudo certbot renew --dry-run
若输出显示Congratulations, all renewals succeeded
,则自动更新配置正常。