以下是对Nginx的SSL/TLS协议支持和安全加密配置的深度剖析,包含最佳实践和优化建议:
nginx
ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全的TLS 1.0/1.1
nginx
ssl_protocols TLSv1.3; # 需Nginx 1.13.0+ + OpenSSL 1.1.1+
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256';
ssl_prefer_server_ciphers on;
nginx
ssl_ciphers 'TLS13+AESGCM+AES256:TLS13+CHACHA20:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM';
nginx
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384';
openssl dhparam -out /etc/nginx/dhparam.pem 4096
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ecdh_curve X25519:secp521r1:secp384r1;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
resolver_timeout 5s;
ssl_trusted_certificate /path/to/chain.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on; # TLS 1.2+
ssl_session_ticket_key /etc/nginx/ticket.key;
ssl_buffer_size 4k; # 平衡延迟与吞吐量
bash
https://www.ssllabs.com/ssltest/
bash
openssl s_client -connect example.com:443 -tls1_3
nmap --script ssl-enum-ciphers -p 443 example.com
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ecdh_curve X25519:secp384r1;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000" always;
}
Nginx版本 | OpenSSL要求 | 关键特性支持 |
---|---|---|
1.25.x | 3.0+ | TLS 1.3完整支持 |
1.21.x | 1.1.1+ | 0-RTT支持 |
1.19.x | 1.1.1 | 基础TLS 1.3 |
1.16.x | 1.0.2 | 仅TLS 1.2 |
通过以上配置,可实现: - A+级SSL Labs评分 - 抵御BEAST/POODLE等攻击 - 完美前向保密(PFS) - 优化TLS握手性能(减少200-300ms延迟)
建议定期更新OpenSSL和Nginx版本以获取最新安全补丁,每6个月重新评估加密套件配置。