Ubuntu Nginx SSL证书更新指南(以Let’s Encrypt为例)
Let’s Encrypt证书有效期为90天,Certbot(Let’s Encrypt官方工具)会自动配置定时任务处理续期,无需手动干预。若需确认或调整自动续期设置,可按以下步骤操作:
运行以下命令模拟续期过程,确保配置正确(无报错则表示正常):
sudo certbot renew --dry-run
Certbot默认会创建系统级定时任务(通常位于/etc/cron.d/certbot
或通过systemd timer管理)。可通过以下命令查看定时任务详情:
cat /etc/cron.d/certbot # 查看cron任务 systemctl list-timers | grep certbot # 查看systemd定时任务
默认情况下,Certbot会每小时检查一次证书有效期,若证书剩余有效期不足30天,则自动触发续期。
若需立即续期(如证书即将过期),可直接运行:
sudo certbot renew
续期完成后,Certbot会自动重新加载Nginx配置(无需手动执行systemctl reload nginx
)。
若证书未通过Certbot管理(如自行上传证书),需手动替换证书文件并更新Nginx配置:
从证书颁发机构(CA)获取新证书(通常为.crt
/.pem
格式的主证书和.key
格式的私钥),并上传至服务器安全目录(如/etc/nginx/ssl/
):
sudo scp new_cert.crt new_private.key user@your_server:/etc/nginx/ssl/
替换前务必备份旧证书及私钥(避免操作失误导致服务中断):
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
将新证书文件移动至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
编辑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; # ... }
运行以下命令验证Nginx配置是否正确(无error
则表示通过):
sudo nginx -t
若配置测试通过,平滑重启Nginx以应用新证书(避免服务中断):
sudo systemctl reload nginx
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
cat your_cert.crt intermediate.crt > fullchain.pem
),并在Nginx配置中引用fullchain.pem
。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连接。