温馨提示×

nginx SSL证书如何更新

小樊
41
2025-11-23 02:48:44
栏目: 云计算

Nginx SSL证书更新指南

一、更新前准备

  • 明确证书来源与文件:确认是 Let’s Encrypt 还是 手动/企业CA,准备好新的证书文件(常见为 .crt/.pem.key,若使用中间证书可能还有 .ca-bundlechain.pem)。
  • 备份现有证书与密钥(强烈建议):例如
    sudo cp /etc/nginx/ssl/your_domain.crt /etc/nginx/ssl/your_domain.crt.bak
    sudo cp /etc/nginx/ssl/your_domain.key /etc/nginx/ssl/your_domain.key.bak
  • 确认 Nginx 配置中证书路径:在 server 配置块中查看 ssl_certificatessl_certificate_key 的实际路径,避免替换错文件。
  • 权限与目录:私钥权限应严格,建议 600;证书目录如 /etc/nginx/ssl/etc/pki/tls 需确保 Nginx 可读。

二、手动更新步骤(通用)

  1. 放置新证书到目标目录(示例:/etc/nginx/ssl
    sudo mkdir -p /etc/nginx/ssl
    sudo cp /tmp/your_new_cert.crt /etc/nginx/ssl/your_domain.crt
    sudo cp /tmp/your_new_key.key /etc/nginx/ssl/your_domain.key
    如包含中间证书,一并复制:
    sudo cp /tmp/chain.pem /etc/nginx/ssl/chain.pem
  2. 更新 Nginx 配置中的证书路径(仅当路径有变化时需要)
    • ssl_certificate:指向你的域名证书(若使用完整链,可指向包含链的文件)
    • ssl_certificate_key:指向你的私钥
    • 如需单独指定信任链:
      ssl_certificate /etc/nginx/ssl/your_domain.crt;
      ssl_certificate_key /etc/nginx/ssl/your_domain.key;
      ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
  3. 校验配置并热重载
    sudo nginx -t
    sudo systemctl reload nginx
  4. 验证结果
    • 浏览器访问 https://your_domain 查看证书有效期与颁发者
    • 命令行核验:
      openssl s_client -connect your_domain:443 -servername your_domain
      检查输出中的 Certificate chain 是否为新证书与中间证书

三、Let’s Encrypt 自动更新(Certbot)

  • CentOS 安装与更新
    sudo yum install epel-release
    sudo yum install certbot python2-certbot-nginx
    sudo certbot --nginx -d your_domain
  • Debian/Ubuntu 安装与更新
    sudo apt-get update
    sudo apt-get install certbot python3-certbot-nginx
    sudo certbot --nginx -d your_domain
  • 说明
    • Certbot 会自动修改 Nginx 配置、部署新证书并(默认)自动续期。
    • Let’s Encrypt 证书有效期通常为 90 天,建议保持自动续期开启,并定期(如每 60–80 天)检查续期是否成功。

四、常见问题与排查

  • 权限错误:私钥应为 600,属主为 root,否则 Nginx 启动失败。
  • 配置路径不一致:确认 ssl_certificatessl_certificate_key 指向新文件;若使用链证书,确认 ssl_trusted_certificate 或合并链文件配置正确。
  • 配置语法错误:每次修改后先执行 sudo nginx -t,通过后再 reload
  • 端口与连通性:确保 443 端口开放,云安全组/防火墙放行;验证时使用 openssl s_client 或在线工具(如 SSL Labs)核对证书链与有效期。

0