Nginx 配置新 SSL 证书并启用 HTTPS 的详细步骤

目录

1. 准备工作

1.1 获取 SSL 证书

1.2 上传证书到服务器

2. 配置 Nginx

2.1 编辑 Nginx 配置文件

2.2 检查配置文件语法

3. 重启 Nginx 服务

4. 验证 SSL 配置

4.1 浏览器访问测试

4.2 命令行验证

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

5.1 安装 Certbot

5.2 获取并配置证书

5.3 设置自动续签

6. 注意事项

权限设置:

证书链完整性:

防火墙配置:

日志监控:

7. 常见问题排查


以下是 在 Nginx 配置新 SSL 证书并启用 HTTPS 的详细步骤,适用于手动安装证书或结合 Let's Encrypt 自动管理的情况:


1. 准备工作

1.1 获取 SSL 证书

  • 证书来源

    • 从证书颁发机构(CA)购买证书(如阿里云、腾讯云、DigiCert 等)。

    • 使用 Let's Encrypt 免费证书(推荐)。

    • 生成自签名证书(仅用于测试环境)。

  • 证书文件要求

    • 服务器证书文件(如 example.com.crtfullchain.pem)。

    • 私钥文件(如 example.com.keyprivkey.pem)。

    • (可选)中间证书文件(如 intermediate.crt,需与主证书合并为完整证书链)。

1.2 上传证书到服务器

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

    sudo mkdir -p /etc/nginx/ssl/
    sudo cp example.com.crt /etc/nginx/ssl/
    sudo cp example.com.key /etc/nginx/ssl/

    2. 配置 Nginx

    2.1 编辑 Nginx 配置文件

    • 打开站点配置文件(通常位于 /etc/nginx/sites-available/your_domain.conf/etc/nginx/conf.d/your_domain.conf):

      sudo nano /etc/nginx/sites-available/example.com.conf
      • 添加 SSL 配置(示例):

      • Nginx

        server {
            listen 443 ssl;
            server_name example.com www.example.com;
        
            # SSL 证书路径
            ssl_certificate /etc/nginx/ssl/example.com.crt;
            ssl_certificate_key /etc/nginx/ssl/example.com.key;
        
            # SSL 协议与加密套件优化
            ssl_protocols TLSv1.2 TLSv1.3;
            ssl_ciphers HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers on;
        
            # 其他配置(如网站根目录、代理等)
            location / {
                root /var/www/html;
                index index.html;
            }
        }
        • 强制 HTTP 跳转 HTTPS(可选)

          Nginx
            server {
                listen 80;
                server_name example.com www.example.com;
                return 301 https://$host$request_uri;
            }

          2.2 检查配置文件语法

          • 测试 Nginx 配置是否正确:

            sudo nginx -t

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


            3. 重启 Nginx 服务

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

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

                sudo systemctl restart nginx

                4. 验证 SSL 配置

                4.1 浏览器访问测试

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

                4.2 命令行验证

                • 使用 openssl 检查证书信息:

                  openssl x509 -in /etc/nginx/ssl/example.com.crt -text -noout
                  • 使用在线工具(如 SSL Labs)测试证书配置。


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

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

                  5.1 安装 Certbot

                  sudo apt install certbot python3-certbot-nginx  # Debian/Ubuntu
                  sudo yum install certbot python3-certbot-nginx  # CentOS/RHEL

                  5.2 获取并配置证书

                  sudo certbot --nginx -d example.com -d www.example.com

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

                  5.3 设置自动续签

                  • 编辑定时任务:

                    sudo crontab -e
                    • 添加以下任务(每天凌晨 2 点检查续签):

                      0 2 * * * 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 example.com.crt intermediate.crt > fullchain.crt

                          (3)防火墙配置

                          • 确保服务器防火墙或安全组允许 443 端口入站流量。

                          (4)日志监控

                          • 检查 Nginx 错误日志(/var/log/nginx/error.log)排查配置问题。


                          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、付费专栏及课程。

                          余额充值