SorryToPerson logo
返回
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 2048
nginx
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
  • 强制使用更安全的密钥交换算法。
  • 2048 位及以上更安全。

8. 常见排查

  • nginx -t 是否通过。
  • 浏览器证书链是否完整。
  • openssl s_client -connect example.com:443 -servername example.com 检查 TLS 启动。
  • 确认私钥、证书文件权限与路径正确。
NginxHTTPSSSL