ssl_protocols TLSv1.2 TLSv1.3; # 禁用老旧不安全的SSL/TLS版本
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';
ssl_prefer_server_ciphers on; # 让服务器决定加密套件顺序
ssl_session_cache shared:SSL:10m; # 10MB共享缓存
ssl_session_timeout 10m; # 会话超时时间
ssl_session_tickets on; # TLS 1.2+会话票据
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
cat domain.crt intermediate.crt root.crt > fullchain.pem
然后在Nginx配置中:
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/domain.key;
openssl ecparam -genkey -name secp384r1 -out ecdsa.key
ssl_early_data on; # 谨慎使用,可能重放攻击风险
ssl_buffer_size 4k; # 减少首次TLS记录大小
listen 443 ssl http2;
ssl_dhparam /path/to/dhparam.pem; # 生成强DH参数: openssl dhparam -out dhparam.pem 2048
ssl_ecdh_curve secp384r1; # 使用强椭圆曲线
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header Expect-CT 'enforce, max-age=30';
使用工具验证配置:
openssl s_client -connect example.com:443 -servername example.com -tlsextdebug -status
nginx -t
测试配置语法监控指标:
通过以上优化,可以显著提高Nginx的SSL/TLS性能同时保持高水平的安全性。建议定期审查和更新配置以应对新的安全威胁和性能优化机会。