Apache支持老旧客户端的关键是放宽TLS协议与密码套件限制:启用TLSv1/TLSv1.1、配置RC4-SHA等兼容套件、使用RSA-2048/SHA-256证书,并设SSLStrictSNIVHostCheck off以启用SNI fallback。

要让 Apache 支持老旧客户端(比如 Windows XP + IE6、Android 4.4 以下、旧版 Java 6 等),关键不是“启用后向兼容性开关”,而是有选择地放宽 TLS 协议和密码套件限制,同时避开不相关或无效的指令(如 SSLOptions)。
下面是你真正需要配置的几项核心内容:
配置允许的 TLS 协议版本
Apache 默认会禁用 TLS 1.0 和 1.1(尤其在 2.4.37+ 版本中)。若需兼容老设备,必须显式启用它们:
- 在
<VirtualHost *:443>块内添加:SSLProtocol all -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
⚠️ 注意:TLS 1.0/1.1 已被 PCI DSS、NIST 等标准弃用,仅限隔离环境或不可升级终端使用。TLSv1.3 不应单独启用(否则老客户端直连失败),建议保留 TLSv1.2 作为兜底。
启用老客户端支持的密码套件
现代默认套件(如 ECDHE-ECDSA-AES256-GCM-SHA384)老系统无法识别。需加入 RC4、3DES、SHA1 等已被淘汰但广泛兼容的组合:
- 示例配置(兼顾一定兼容性与最低安全底线):
SSLCipherSuite ECDHE-RSA-RC4-SHA:RC4-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA SSLHonorCipherOrder on
✅ RC4-SHA 可支持 IE6–IE10、Android < 4.4;
❌ 避免!EXPORT和!LOW被误删——它们能过滤掉真正危险的出口级套件。
使用兼容性更强的证书与私钥
- 私钥推荐 RSA-2048(避免 3072+ 或 ECDSA P-384),某些老 OpenSSL 版本不支持大密钥或新曲线;
- 证书签名算法用 SHA-256(不要用 SHA-1:自 Apache 2.4.10 起已彻底拒绝 SHA-1 证书);
- 不要用 Ed25519 或 SM2 国密证书——绝大多数旧客户端完全不识别。
其他必要配合项
-
若后端是极老系统(如 IIS 6、Java 6u45 前),且日志明确报
Re-negotiation requested but not allowed,才考虑:SSLInsecureRenegotiation on
✅ 必须放在
<VirtualHost>内,且仅用于该站点;
❌ 不要全局开启,它会主动放弃 CVE-2009-3555 防护。 -
关闭可能冲突的增强特性:
# 避免 StrictRequire 或 OptRenegotiate 干扰老握手 SSLStrictSNIVHostCheck off
不复杂但容易忽略


















