debian

Nginx SSL证书如何在Debian更新

小樊
41
2025-09-22 00:29:38
栏目: 云计算

在Debian系统上更新Nginx SSL证书的完整步骤

1. 准备工作:备份旧证书(可选但强烈推荐)

在替换证书前,务必备份现有证书及私钥文件,避免操作失误导致服务中断。

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

2. 安装/更新Certbot工具(用于Let’s Encrypt证书自动化管理)

Certbot是Debian系统上管理Let’s Encrypt证书的主流工具,需先确保其已安装最新版本:

sudo apt update
sudo apt install certbot python3-certbot-nginx

3. 更新SSL证书

情况一:使用Let’s Encrypt证书(自动更新)

若证书通过Certbot获取,可直接运行以下命令自动更新:

sudo certbot --nginx -d your_domain_name [-d additional_domain.com]

情况二:手动管理证书(非Let’s Encrypt)

若证书由其他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

4. 验证Nginx配置并重新加载

更新证书后,需检查Nginx配置语法是否正确,避免因配置错误导致服务崩溃:

sudo nginx -t

若输出显示syntax is ok,则执行以下命令重新加载Nginx,使新证书生效:

sudo systemctl reload nginx

5. 验证证书是否生效

通过浏览器访问网站,点击地址栏的安全锁图标,查看证书有效期及详细信息,确认新证书已成功应用。
或使用OpenSSL命令行工具验证:

openssl s_client -connect your_domain_name:443 -servername your_domain_name | openssl x509 -noout -dates

输出中的notAfter字段即为证书到期时间。

6. 设置自动更新(针对Let’s Encrypt证书,可选但推荐)

Let’s Encrypt证书有效期为90天,需定期续签。Certbot默认会添加定时任务(通常位于/etc/cron.d/certbot),但可手动添加更严格的检查:

sudo crontab -e

添加以下内容(每天凌晨2点检查并自动续签):

0 2 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

测试自动更新(避免生产环境出错):

sudo certbot renew --dry-run

若输出显示Congratulations, all renewals succeeded,则自动更新配置正常。

0
看了该问题的人还看了