温馨提示×

Debian Nginx SSL更新流程是什么

小樊
45
2025-12-27 03:11:22
栏目: 云计算

Debian 上 Nginx SSL 证书更新流程

一 准备与检查

  • 确认系统为 Debian,Web 服务为 Nginx,并具备 sudo 权限。
  • 如使用 Let’s Encrypt,安装 Certbot 及 Nginx 插件:sudo apt update && sudo apt install certbot python3-certbot-nginx。
  • 备份现有证书与密钥(可选但推荐):sudo cp /etc/ssl/certs/your_domain.crt /etc/ssl/certs/your_domain.crt.bak;sudo cp /etc/ssl/private/your_domain.key /etc/ssl/private/your_domain.key.bak。
  • 确保防火墙放行 443 端口,便于 ACME 验证与对外访问。

二 自动更新 Certbot 管理证书

  • 首次为域名签发/安装(如尚未配置):sudo certbot --nginx -d your_domain.com(可一次指定多个域名:-d domain1 -d domain2)。过程中可选择是否将 HTTP→HTTPS 重定向写入 Nginx 配置。
  • 测试自动续期(模拟运行,不真正更换证书):sudo certbot renew --dry-run。Let’s Encrypt 证书有效期通常为 90 天,建议定期续期。
  • 设置自动续期(生产推荐定时任务):
    • 方式 A(系统级定时任务):编辑 root 的 crontab:sudo crontab -e,添加 0 2 * * * certbot renew --quiet(每日 2:00 检查并静默续期)。
    • 方式 B(Certbot 续期后钩子):在 root crontab 添加 0 0,12 * * * certbot renew --post-hook “systemctl reload nginx”(每日 0:0012:00 检查,成功后重载 Nginx)。
  • 续期成功后无需重启 Nginx,Certbot 会自动更新证书文件;若使用钩子或定时任务重载,请确保服务平滑生效。

三 手动更新 自定义或第三方 CA 证书

  • 上传新证书与私钥至服务器(示例目录):sudo mkdir -p /etc/nginx/ssl;sudo cp /path/to/new_certificate.crt /etc/nginx/ssl/;sudo cp /path/to/new_private_key.key /etc/nginx/ssl/。
  • 修正文件权限:sudo chmod 600 /etc/nginx/ssl/.key;sudo chmod 644 /etc/nginx/ssl/.crt。
  • 修改站点配置(如 /etc/nginx/sites-available/your_domain):将 ssl_certificate 与 ssl_certificate_key 指向新文件,例如:ssl_certificate /etc/nginx/ssl/your_domain.crt; ssl_certificate_key /etc/nginx/ssl/your_domain.key;。
  • 语法检查与热重载:sudo nginx -t && sudo systemctl reload nginx。
  • 验证:浏览器访问 https://your_domain.com 或使用命令行工具(如 openssl)检查证书有效期与链是否完整。

四 验证与常见问题

  • 验证要点:证书到期时间应为新的;证书链完整;HTTP 访问是否被 301 重定向到 HTTPS(如选择重定向);Nginx 无语法错误且重载成功。
  • 常见问题与排查:
    • 权限错误:私钥应为 600,证书 644;否则 Nginx 启动失败或报错。
    • 续期失败:先运行 sudo certbot renew --dry-run 查看详细错误;检查 DNS80/443 连通性、Webroot 目录权限及 ACME 挑战可达性。
    • 配置未生效:确认站点配置已启用(/etc/nginx/sites-enabled/ 符号链接存在),执行 sudo nginx -t 后再 reload。
    • 日志定位:查看 /var/log/nginx/error.log/var/log/letsencrypt/letsencrypt.log 获取具体报错信息。

0