插件窝 干货文章 Nginx安全架构设计:加强SSL/TLS安全防护

Nginx安全架构设计:加强SSL/TLS安全防护

SSL Nginx HTTPS 配置 485    来源:    2025-04-20

Nginx安全架构设计:加强SSL/TLS安全防护

1. 基础SSL/TLS配置

1.1 启用HTTPS

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    # 强制HTTPS重定向
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }
}

1.2 禁用不安全的协议版本

ssl_protocols TLSv1.2 TLSv1.3;  # 禁用SSLv3, TLSv1.0和TLSv1.1

2. 强化加密套件配置

2.1 推荐加密套件

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;

2.2 禁用弱加密算法

ssl_ciphers '!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA';

3. 高级安全配置

3.1 启用HTTP严格传输安全(HSTS)

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

3.2 OCSP Stapling配置

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/trusted_ca_certificates.crt;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

3.3 会话恢复优化

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;  # 如果使用TLSv1.3,建议关闭

4. 性能优化

4.1 DH参数增强

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

4.2 TLS记录大小优化

ssl_buffer_size 4k;  # 优化TLS记录大小

5. 安全头配置

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.example.com; img-src 'self' https://*.example.com data:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'self'; form-action 'self';";

6. 监控与维护

6.1 定期检查SSL配置

推荐使用以下工具定期检查配置: - SSL Labs Test - Mozilla SSL Configuration Generator

6.2 证书自动续期

使用Let's Encrypt和certbot实现自动续期:

certbot renew --nginx --quiet --no-self-upgrade

7. 最佳实践

  1. 定期更新Nginx:保持Nginx版本最新以获取安全补丁
  2. 密钥轮换:定期更换SSL证书和私钥
  3. 禁用TLS压缩:防止CRIME攻击
  4. 限制TLS重新协商:防止DoS攻击
  5. 监控SSL/TLS握手失败:及时发现潜在攻击

通过以上配置,您可以显著提升Nginx服务器的SSL/TLS安全防护能力,同时保持良好的性能表现。