在web服务器配置当中,SSL/TLS 加密协议是保障数据传输安全的核心组件。Nginx作为高性能的反向代理服务器,广泛应用于网站、CDN、API 网关等场景,而其 SSL/TLS 配置直接影响网站的安全性、兼容性和性能。那么,Nginx支持哪些SSL/TLS版本?如何选择最优的TLS版本?
Nginx 主要支持以下 TLS(传输层安全协议) ,版本(SSL 早期版本已被淘汰)。
SSLv2弃用,1995年发布,极其不安全,Nginx 从未支持
SSLv3弃用,1996年发布,存在 POODLE 攻击漏洞,Nginx 1.13.0 之后禁用
TLS 1.0弃用,1999年发布,已被 PCI-DSS 及浏览器厂商禁用
TLS 1.1弃用,2006年发布,安全性较差,已被淘汰
TLS 1.2推荐,2008年发布,目前主流安全协议,兼容性最好
TLS 1.3推荐,2018年发布,速度快,安全性最高,现代浏览器支持
默认支持情况:
Nginx 1.13.0 及以上版本 默认支持 TLS 1.2 和 TLS 1.3.并禁用了 SSLv3.
Nginx 1.15.0 及以上版本 完全支持 TLS 1.3.
旧版本(如 1.10.x)可能仍然默认支持 TLS 1.0/1.1.需要手动禁用。
在选择TLS版本时,需要在安全性、兼容性和性能之间取得平衡。以下是不同应用场景下的推荐方案:
1. 高安全性的现代网站和API服务,推荐使用TLS 1.3 + TLS 1.2(禁用旧版本)。TLS 1.3采用更先进的加密算法,无需手动配置加密套件,可以减少握手时间,增强安全性。而TLS 1.2仍然广泛支持,可兼容旧设备和浏览器。
2. 兼容性优先(跨境电商和传统企业网站)推荐TLS 1.3 + TLS 1.2 + TLS 1.1(部分场景)。仍然允许部分旧系统(如 Windows 7 + IE11)访问网站,避免部分用户无法连接。但需在 2024 年全面淘汰 TLS 1.1.因其安全性较低。特别注意不推荐继续支持 TLS 1.0.因其已被主流浏览器禁用。
3. 内部系统推荐仅启用 TLS 1.2.在受控环境中,兼容性比安全性更重要,TLS 1.3 带来的性能提升在局域网环境中意义不大。
Nginx 实践方案——最佳SSL/TLS配置
1. 只允许 TLS 1.3 & 1.2.提升安全性
server {
listen 443 ssl http2;
server_name example.com;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256';
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
2. 启用 HTTP/2 与 TLS 1.3 结合优化性能
server {
listen 443 ssl http2;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';
}
3. 启用 OCSP Stapling 提高 TLS 连接速度
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
4. 强制 HTTPS & 启用 HSTS(HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
配置完Nginx之后,可以使用OpenSSL和在线工具,测试SSL/TLS配置是否安全。Nginx支持的TLS 1.2 和 TLS 1.3是当前的主流安全协议,在不同的使用场景之下,选择也会有所差异,简单总结就是高安全性业务仅启用TLS 1.3 + TLS 1.2并优化加密套件。兼容性业务支持 TLS 1.3 + TLS 1.2 + TLS 1.1.逐步淘汰旧协议。内部系统启用 TLS 1.2 即可,避免兼容性问题。此外,推荐使用 OCSP Stapling、HSTS、HTTP/2 进一步优化安全性和性能。