Nginx2026-04-15·8 分钟
Nginx SSL/TLS 与 HTTPS 配置
介绍 Nginx HTTPS 配置、证书管理、TLS 参数与安全加固要点。
Nginx SSL/TLS 与 HTTPS 配置
1. 基本 HTTPS 配置
nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
root /usr/share/nginx/html;
}
}2. 证书类型
- 自签名证书:仅用于测试环境。
- Let’s Encrypt / ACME:免费的生产证书。
- 商业证书:适合需信任链验证的场景。
3. 重定向 HTTP 到 HTTPS
nginx
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}4. TLS 协议与加密套件
nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;- 关闭旧版 TLS 1.0/1.1,避免已知漏洞。
- 如果只支持现代浏览器,可优先使用 TLS 1.3。
5. 安全增强配置
nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header Referrer-Policy no-referrer-when-downgrade;- HSTS 可强制浏览器使用 HTTPS。
always选项确保即使是错误响应也返回 Header。
6. OCSP Stapling
nginx
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;- 提升证书状态验证性能。
- 需要完整证书链支持。
7. Diffie-Hellman 参数
bash
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048nginx
ssl_dhparam /etc/nginx/ssl/dhparam.pem;- 强制使用更安全的密钥交换算法。
- 2048 位及以上更安全。
8. 常见排查
nginx -t是否通过。- 浏览器证书链是否完整。
openssl s_client -connect example.com:443 -servername example.com检查 TLS 启动。- 确认私钥、证书文件权限与路径正确。
NginxHTTPSSSL