插件窝 干货文章 Nginx如何实现SSL/TLS配置

Nginx如何实现SSL/TLS配置

配置 Nginx SSL 证书 564    来源:    2025-04-10

Nginx SSL/TLS 配置指南

基本SSL配置

要启用SSL/TLS加密,您需要在Nginx配置文件中进行以下设置:

server {
    listen 443 ssl;
    server_name example.com;

    # 证书和私钥路径
    ssl_certificate /path/to/your_domain.crt;
    ssl_certificate_key /path/to/your_domain.key;

    # 启用会话复用以减少握手开销
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 其他配置...
}

安全强化配置

1. 协议和加密套件配置

ssl_protocols TLSv1.2 TLSv1.3;  # 禁用不安全的SSL/TLS版本
ssl_prefer_server_ciphers on;

# 现代加密套件配置
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';

2. DH参数增强

# 生成DH参数: openssl dhparam -out /etc/nginx/dhparam.pem 2048
ssl_dhparam /etc/nginx/dhparam.pem;

3. HSTS头部

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

性能优化

1. OCSP Stapling

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

2. TLS 1.3 0-RTT配置

ssl_early_data on;

HTTP到HTTPS重定向

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

多域名配置

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /path/to/wildcard.crt;
    ssl_certificate_key /path/to/wildcard.key;

    # 其他配置...
}

证书自动续期

建议使用Let's Encrypt和certbot工具自动管理证书:

# 安装certbot
sudo apt-get install certbot python3-certbot-nginx

# 获取并安装证书
sudo certbot --nginx -d example.com -d www.example.com

# 设置自动续期
sudo certbot renew --dry-run

验证配置

配置完成后,使用以下命令验证并重新加载Nginx:

sudo nginx -t  # 测试配置
sudo systemctl reload nginx  # 重新加载配置

使用SSL Labs测试工具(https://www.ssllabs.com/ssltest/)验证您的SSL配置安全性。

常见问题解决

  1. 证书链不完整:确保中间证书已包含在证书文件中
  2. 私钥不匹配:检查证书和私钥是否对应
  3. 协议不兼容:确保客户端支持您配置的TLS版本
  4. HSTS问题:首次配置时谨慎使用includeSubDomains和preload参数

如需更高级的配置,可以考虑启用TLS 1.3的0-RTT特性或配置客户端证书认证等安全措施。