目录
5. 自动续签证书(推荐,适用于 Let's Encrypt)
以下是 在 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/
):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 ok
且test 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 服务更新指南 |