温馨提示×

Nginx SSL证书更新步骤是什么

小樊
35
2025-12-31 01:11:17
栏目: 云计算

Nginx SSL证书更新步骤

一 准备与备份

  • 准备好新的证书文件:通常包括证书文件(扩展名为 .crt/.pem)和私钥文件(扩展名为 .key)。如使用 Let’s Encrypt,证书通常位于 /etc/letsencrypt/live/你的域名/,常用文件为 fullchain.pem(证书链)和 privkey.pem(私钥)。
  • 备份现有证书与配置:将旧证书复制为备份(例如 xx.crt.bak/xx.key.bak),并备份 Nginx 配置目录(如 /etc/nginx/),以便回滚。
  • 确认 Nginx 配置中 SSL 证书路径,常见位置为 /etc/nginx/ssl//etc/letsencrypt/,以及站点配置在 /etc/nginx/conf.d//etc/nginx/sites-available/ 下。

二 手动更新证书

  • 上传或放置新证书到服务器(如 /etc/nginx/ssl/),确保私钥权限安全(建议 600)。
  • 编辑站点配置,更新证书路径,例如:
    server {
        listen 443 ssl;
        server_name your_domain.com;
        ssl_certificate     /etc/nginx/ssl/new.pem;
        ssl_certificate_key /etc/nginx/ssl/new.key;
        ssl_protocols       TLSv1.2 TLSv1.3;
        ssl_ciphers         ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;
    }
    
  • 检查配置并重载 Nginx:
    sudo nginx -t
    sudo systemctl reload nginx
    
  • 验证:使用浏览器访问 https://你的域名,或在线检测工具(如 myssl.com)查看证书是否已更换且到期时间正确。

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

  • 安装 Certbot(以 Debian/Ubuntu 为例):
    sudo apt-get update
    sudo apt-get install certbot python3-certbot-nginx
    
  • 获取或续期证书并自动配置 Nginx:
    sudo certbot --nginx -d your_domain.com
    
  • 测试自动续期(到期前会自动续期,建议定期演练):
    sudo certbot renew --dry-run
    
  • 证书默认有效期为 90 天,Certbot 的定时任务通常会自动续期并自动重载 Nginx。

四 验证与回滚

  • 验证要点:
    • 访问 https://你的域名 确认证书已更新;
    • 使用 myssl.com 或类似工具检查证书链与到期时间;
    • 确保防火墙已放行 443/tcp(如 firewall-cmd --zone=public --add-port=443/tcp --permanent && firewall-cmd --reload)。
  • 回滚方案:若更新异常,立即将证书与配置恢复到备份版本,并执行 nginx -t && systemctl reload nginx

五 常见问题与处理

  • 配置语法错误:先执行 nginx -t 修正后再 reload
  • 权限问题:私钥文件权限应为 600,属主为 root 或 Nginx 运行用户。
  • 端口与防火墙:确认 443 端口已开放,云厂商安全组策略同步放行。
  • 中间设备缓存:若部署了 WAF/CDN/反向代理,需在这些设备上同步更新证书,否则可能仍看到旧证书。
  • 续期失败排查:检查域名解析、HTTP-01 验证路径 /.well-known/acme-challenge/ 是否可达,或改用 DNS-01 并在续期时通过 API 自动添加 TXT 记录。

0