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连接。