Nginx SSL 证书更换与 HTTPS 服务更新指南

目录

1. 准备工作

1.1 获取新证书

1.2 备份旧证书

2. 替换证书

2.1 上传新证书

2.2 修改 Nginx 配置

2.3 检查配置文件语法

3. 重启 Nginx 服务

4. 验证新证书

4.1 浏览器验证

4.2 命令行验证

5. 自动续签(推荐,适用于 Let's Encrypt)

5.1 获取并配置证书

5.2 测试自动续签

5.3 设置定时任务

6. 注意事项

7. 常见问题排查


以下是Nginx SSL 证书更换与 HTTPS 服务更新详细步骤,适用于手动替换证书或结合 Let's Encrypt 自动续签的情况:


1. 准备工作

1.1 获取新证书
  • 从证书颁发机构(CA)获取新证书文件(如 .crt.pem 文件)和私钥文件(.key 文件)。

  • 确保证书与域名匹配,并包含完整的证书链(如 fullchain.crtprivate.key)。

1.2 备份旧证书
  • 备份证书和私钥

    sudo cp /etc/nginx/ssl/example.com.crt /etc/nginx/ssl/example.com.crt.bak
    sudo cp /etc/nginx/ssl/example.com.key /etc/nginx/ssl/example.com.key.bak
    • 备份 Nginx 配置文件(如 /etc/nginx/nginx.conf 或站点配置文件):

      sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

      2. 替换证书

      2.1 上传新证书
      • 将新证书和私钥上传到服务器的安全目录(如 /etc/nginx/ssl/)。

      • 示例:

        sudo scp new_cert.crt new_private.key user@your_server:/etc/nginx/ssl/
        2.2 修改 Nginx 配置
        • 编辑 Nginx 配置文件(如 /etc/nginx/sites-available/default/etc/nginx/conf.d/your_site.conf)。

        • 更新证书路径(确保 ssl_certificatessl_certificate_key 指向新证书):nginx

          server {
              listen 443 ssl;
              server_name your_domain.com;
          
              ssl_certificate /etc/nginx/ssl/new_cert.crt;  # 新证书路径
              ssl_certificate_key /etc/nginx/ssl/new_private.key;  # 新私钥路径
          
              # 其他 SSL 配置(可保留原样)
              ssl_protocols TLSv1.2 TLSv1.3;
              ssl_ciphers HIGH:!aNULL:!MD5;
              ssl_prefer_server_ciphers on;
          }
          2.3 检查配置文件语法
          • 测试 Nginx 配置是否正确:

            sudo nginx -t

              如果提示 syntax is oktest is successful,则配置无误。


            3. 重启 Nginx 服务

            • 平滑重启 Nginx(避免服务中断):

              sudo systemctl reload nginx
              • 如果失败,尝试完全重启:

                sudo systemctl restart nginx

                4. 验证新证书

                4.1 浏览器验证
                • 访问 https://your_domain.com,检查浏览器地址栏是否显示安全锁标志,且无证书错误。

                4.2 命令行验证
                • 使用 openssl 检查证书有效期:

                  openssl x509 -in /etc/nginx/ssl/new_cert.crt -text -noout | grep "Not After"
                  • 使用在线工具(如 SSL Labs)测试证书配置。


                  5. 自动续签(推荐,适用于 Let's Encrypt)

                  如果使用 Certbot(Let's Encrypt)管理证书:

                  5.1 获取并配置证书
                  sudo certbot --nginx

                  按提示选择域名并启用自动重定向(HTTP 到 HTTPS)。

                  5.2 测试自动续签
                  sudo certbot renew --dry-run

                  确保续签脚本无错误。

                  5.3 设置定时任务
                  • 编辑定时任务:

                    sudo crontab -e
                    • 添加以下任务(每月 1 日凌晨 1 点续签):

                      0 1 1 * * certbot renew --quiet

                      6. 注意事项

                      (1)权限设置

                      • 确保证书和私钥文件权限正确:

                        sudo chmod 600 /etc/nginx/ssl/*.key
                        sudo chmod 644 /etc/nginx/ssl/*.crt
                        sudo chown root:root /etc/nginx/ssl/*.key

                        (2)证书链完整性

                        • 如果证书文件缺少中间证书,需将 CA 提供的中间证书合并到主证书文件中:

                          cat new_cert.crt intermediate.crt > fullchain.crt

                          (3)回滚准备

                          • 若新证书导致问题,立即恢复备份的旧证书和配置,并重启 Nginx:

                            sudo cp /etc/nginx/ssl/example.com.crt.bak /etc/nginx/ssl/example.com.crt
                            sudo cp /etc/nginx/ssl/example.com.key.bak /etc/nginx/ssl/example.com.key
                            sudo systemctl reload nginx

                            7. 常见问题排查

                            • 证书未生效:检查 Nginx 配置中证书路径是否正确,或尝试强制刷新浏览器缓存。

                            • 权限错误:确保私钥文件权限为 600,且 Nginx 进程有权限读取证书文件。

                            • 配置冲突:运行 nginx -t 检查语法,或查看日志文件 /var/log/nginx/error.log

                            通过以上步骤,可以完成 Nginx 的 SSL 证书更换。

                            扩展阅读:

                            Nginx 配置新 SSL 证书并启用 HTTPS 的详细步骤Nginx 配置新 SSL 证书并启用 HTTPS 的详细步骤
                            Nginx SSL 证书更换与 HTTPS 服务更新指南Nginx SSL 证书更换与 HTTPS 服务更新指南
                            评论
                            添加红包

                            请填写红包祝福语或标题

                            红包个数最小为10个

                            红包金额最低5元

                            当前余额3.43前往充值 >
                            需支付:10.00
                            成就一亿技术人!
                            领取后你会自动成为博主和红包主的粉丝 规则
                            hope_wisdom
                            发出的红包

                            打赏作者

                            34号树洞

                            你的鼓励将是我创作的最大动力

                            ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
                            扫码支付:¥1
                            获取中
                            扫码支付

                            您的余额不足,请更换扫码支付或充值

                            打赏作者

                            实付
                            使用余额支付
                            点击重新获取
                            扫码支付
                            钱包余额 0

                            抵扣说明:

                            1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                            2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                            余额充值