您好!欢迎访问云南IT信息网
广告位

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

栏目: 日期: 浏览:5

 


image.png

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

1. 准备工作

1.1 获取 SSL 证书

证书来源

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

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

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

证书文件要求

服务器证书文件(如 example.com.crt  fullchain.pem)。

私钥文件(如 example.com.key  privkey.pem)。

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

1.2 上传证书到服务器

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

Bash                  
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):

Bash                  
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 配置是否正确:

Bash                  
sudo nginx -t

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

 

3. 重启 Nginx 服务

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

Bash                  
sudo systemctl reload nginx

如果失败,尝试完全重启:

Bash                  
sudo systemctl restart nginx

 

4. 验证 SSL 配置

4.1 浏览器访问测试

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

4.2 命令行验证

使用 openssl 检查证书信息:

Bash                  
openssl x509 -in /etc/nginx/ssl/example.com.crt -text -noout

使用在线工具(如 SSL Labs)测试证书配置。

 

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

如果使用 CertbotLet's Encrypt)管理证书:

5.1 安装 Certbot

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

5.2 获取并配置证书

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

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

5.3 设置自动续签

编辑定时任务:

Bash                  
sudo crontab -e

添加以下任务(每天凌晨 2 点检查续签):

Bash                  
0 2 * * * certbot renew --quiet

 

6. 注意事项

1)权限设置:

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

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

2)证书链完整性:

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

Bash                  
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 证书配置。


关键词: