旧版浏览器打不开HTTPS网站主因是ssl_ciphers配置过严,缺失IE11、Android 4.4 WebView等所需AES-CBC+SHA类旧加密套件;需在禁用不安全算法前提下,显式保留ECDHE-RSA-AES128-SHA等CBC套件,并确保ssl_protocols含TLSv1.2、ssl_prefer_server_ciphers开启。

旧版浏览器打不开 HTTPS 网站,十有八九是 ssl_ciphers 配置太“洁癖”了——只认最新最安全的套件,把 IE11、Android 4.4 WebView、Chrome 49 甚至部分 QQ 浏览器直接拒之门外。这不是证书问题,也不是协议版本没开,而是加密算法列表里缺了它们能握手成功的那几款。
哪些旧浏览器容易被拦在门外
以下浏览器或内核在 TLS 握手时依赖较老但尚未完全淘汰的加密套件:
-
IE11(Windows 7/8.1):不支持 GCM 模式,必须有 AES-CBC + SHA1 套件,如
ECDHE-RSA-AES128-SHA -
Android 4.4 及更早 WebView:仅支持 TLS 1.2,但不支持 ChaCha20 或部分 ECDSA 套件,需保留
AES128-SHA256和AES256-SHA -
Chrome ≤49(尤其 XP SP3 环境):会因协商到“blacklisted suite”被拒绝,实际需要兼容
ECDHE-RSA-AES128-SHA和DHE-RSA-AES128-SHA - 部分国产浏览器(如魅族、早期 QQ 浏览器):基于旧 Chromium 内核,对 AEAD 套件支持不稳定,需回退到 CBC 类组合
推荐的兼容性优先 ssl_ciphers 配置
这个配置在禁用所有已知不安全算法(RC4、SSLv3、EXPORT、MD5、NULL)的前提下,覆盖 TLS 1.2 主流旧终端,同时保持 A+ 评级(SSLLabs 测试):
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
关键点说明:
- 开头全是
ECDHE前缀,确保前向保密;GCM与CBC+SHA并存,兼顾现代与旧环境 - 显式保留
-SHA和-SHA256结尾的 CBC 套件,是 IE11 和 Android 4.x 的命门 - 未启用
CHACHA20:虽安全但旧内核支持差,反而引发握手失败 - 禁用所有
DES、RC4、MD5、EXPORT,避免降级攻击风险
验证是否真正生效
改完配置别急着 reload,先做三件事:
- 运行
nginx -t确保语法无误 - 用 SSL Labs 测试工具 查看 Handshake Simulation 区域,重点确认 Chrome 49 / XP SP3、IE 11 / Win7、Android 4.4.2 是否显示绿色 ✅(不是灰色或红色)
- 在真实旧设备上访问,比如 Windows 7 虚拟机跑 IE11,或安卓 4.4 实机打开目标域名,观察是否跳过 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 错误
额外注意项
仅调 ssl_ciphers 不够,还需同步检查:
-
ssl_protocols 必须包含
TLSv1.2(旧浏览器不支持 TLS 1.3),建议设为ssl_protocols TLSv1.2 TLSv1.3; - ssl_prefer_server_ciphers on; 必须开启,否则客户端可能强行选它支持但你已禁用的套件
- 若使用 SM2 国密证书,OpenSSL 版本必须 ≥1.1.1,且需单独声明
EECDH+SM2,不能混在通用列表中 - 重启后用
openssl s_client -connect yourdomain.com:443 -cipher 'ALL:COMPLEMENTOFALL' -tls1_2手动测试可协商套件,比浏览器更底层、更准


















