温馨提示×

ubuntu nginx ssl证书如何更新

小樊
40
2025-10-06 11:21:55
栏目: 云计算

Ubuntu Nginx SSL证书更新指南(以Let’s Encrypt为例)

一、自动续期(推荐方式)

Let’s Encrypt证书有效期为90天,Certbot(Let’s Encrypt官方工具)会自动配置定时任务处理续期,无需手动干预。若需确认或调整自动续期设置,可按以下步骤操作:

1. 测试自动续期流程

运行以下命令模拟续期过程,确保配置正确(无报错则表示正常):

sudo certbot renew --dry-run 

2. 查看自动续期定时任务

Certbot默认会创建系统级定时任务(通常位于/etc/cron.d/certbot或通过systemd timer管理)。可通过以下命令查看定时任务详情:

cat /etc/cron.d/certbot # 查看cron任务 systemctl list-timers | grep certbot # 查看systemd定时任务 

默认情况下,Certbot会每小时检查一次证书有效期,若证书剩余有效期不足30天,则自动触发续期。

3. 手动触发续期(可选)

若需立即续期(如证书即将过期),可直接运行:

sudo certbot renew 

续期完成后,Certbot会自动重新加载Nginx配置(无需手动执行systemctl reload nginx)。

二、手动更新(非自动场景)

若证书未通过Certbot管理(如自行上传证书),需手动替换证书文件并更新Nginx配置:

1. 准备新证书文件

从证书颁发机构(CA)获取新证书(通常为.crt/.pem格式的主证书和.key格式的私钥),并上传至服务器安全目录(如/etc/nginx/ssl/):

sudo scp new_cert.crt new_private.key user@your_server:/etc/nginx/ssl/ 

2. 备份旧证书

替换前务必备份旧证书及私钥(避免操作失误导致服务中断):

sudo cp /etc/nginx/ssl/old_cert.crt /etc/nginx/ssl/old_cert.crt.bak sudo cp /etc/nginx/ssl/old_private.key /etc/nginx/ssl/old_private.key.bak 

3. 替换证书文件

将新证书文件移动至Nginx配置指定的路径(如/etc/nginx/ssl/yourdomain.com.crt/etc/nginx/ssl/yourdomain.com.key):

sudo mv /etc/nginx/ssl/new_cert.crt /etc/nginx/ssl/yourdomain.com.crt sudo mv /etc/nginx/ssl/new_private.key /etc/nginx/ssl/yourdomain.com.key 

4. 修改Nginx配置

编辑Nginx站点配置文件(通常位于/etc/nginx/sites-available/yourdomain.com/etc/nginx/conf.d/yourdomain.conf),更新ssl_certificate(主证书路径)和ssl_certificate_key(私钥路径):

server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/nginx/ssl/yourdomain.com.crt; # 新证书路径 ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key; # 新私钥路径 # 其他SSL配置(如协议、加密套件)保持不变 include /etc/nginx/options-ssl-nginx.conf; ssl_dhparam /etc/nginx/ssl-dhparams.pem; # ... } 

5. 检查配置语法

运行以下命令验证Nginx配置是否正确(无error则表示通过):

sudo nginx -t 

6. 重启Nginx服务

若配置测试通过,平滑重启Nginx以应用新证书(避免服务中断):

sudo systemctl reload nginx 

三、注意事项

  1. 证书权限:确保证书文件权限正确,私钥文件需设置为600(仅root可读),主证书文件设置为644
    sudo chmod 600 /etc/nginx/ssl/*.key sudo chmod 644 /etc/nginx/ssl/*.crt sudo chown root:root /etc/nginx/ssl/*.key 
  2. 证书链完整性:若证书缺少中间证书,需将CA提供的中间证书合并到主证书文件中(如cat your_cert.crt intermediate.crt > fullchain.pem),并在Nginx配置中引用fullchain.pem
  3. 回滚准备:若新证书导致问题(如浏览器报错),立即恢复备份的旧证书并重启Nginx:
    sudo cp /etc/nginx/ssl/old_cert.crt.bak /etc/nginx/ssl/yourdomain.com.crt sudo cp /etc/nginx/ssl/old_private.key.bak /etc/nginx/ssl/yourdomain.com.key sudo systemctl reload nginx 

通过以上步骤,可完成Ubuntu Nginx SSL证书的更新(自动/手动),确保网站始终保持安全的HTTPS连接。

0