关键在于构建适配旧协议栈的完整tls环境:需用openssl 1.1.1w启用sslv3及弱算法编译,签发sha1-rsa证书并含san,apache配置sslstrictsnivhostcheck off、前置兼容虚拟主机,合并证书链(不含根证书),并设sslciphersuite aes128-sha:rc4-sha:ecdhe-rsa-aes128-sha与sslhonorcipherorder on。

要让 Apache 证书兼容老旧浏览器(如 Windows XP/2000 上的 IE6、IE8),关键不是“换一个证书”,而是构建一套适配旧协议栈的完整 TLS 通信环境——包括启用 SSLv3、使用 SHA1 签名、提供兼容性证书链、配置弱加密套件,并配合 Apache 的 fallback 行为。单靠证书本身无法解决,必须整体协同。
用 OpenSSL 1.1.1w 签发 SHA1 兼容证书
现代 CA 已停发 SHA1 证书,但你可在受控环境中自行签发:
- 编译 OpenSSL 时务必启用 enable-ssl3、enable-ssl3-method 和 enable-weak-ssl-ciphers,否则无法生成或加载 SHA1-RSA 证书
- 生成私钥和 CSR 时,指定摘要算法:
openssl req -new -sha1 -key server.key -out server.csr - 自签名时同样用
-sha1:openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 3650 -sha1 - 证书需包含 Subject Alternative Name(SAN),仅 CN 不足以通过 IE6/XP 的域名校验
Apache 必须启用 SNI fallback 行为
老旧浏览器不发送 SNI 扩展,服务器无法识别目标域名,会默认返回第一个加载的虚拟主机证书:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在全局 SSL 配置中(如
/etc/apache2/mods-enabled/ssl.conf)添加:SSLStrictSNIVHostCheck off - 把兼容性最强的虚拟主机(即含通配符或多个 SAN 的 SHA1 证书)放在配置文件最前面
- ServerPath 指令完全无关且已废弃,它只用于 HTTP 路径虚拟主机,对 HTTPS 和 SNI 无任何作用
合并证书链并禁用根证书嵌入
Apache 不支持“多根证书链”,但可通过正确组织链文件实现跨代兼容:
- 将你的域名证书(
server.crt)与中间证书(如兼容 DST Root CA X3 的旧中间件)合并为单个文件,顺序必须是:域名证书 → 中间证书 - 不要把根证书(如 ISRG Root X1 或 DST Root CA X3)写进链文件——老系统信任 DST,新系统信任 ISRG,由客户端自主选择路径
- 在虚拟主机中只用
SSLCertificateFile /path/to/chained.crt;SSLCertificateChainFile已废弃,设了也无效
配套加密套件与协议级适配
证书只是握手一环,若加密套件不匹配,连接仍会在协商阶段失败:
-
SSLProtocol指令在 Apache 2.4.8+ 中已被移除,强行配置会导致启动失败;真正可控的是SSLCipherSuite和SSLHonorCipherOrder - 针对 IE6–IE8,推荐套件组合:
SSLCipherSuite AES128-SHA:RC4-SHA:ECDHE-RSA-AES128-SHA - 必须启用:
SSLHonorCipherOrder on,确保 Apache 按你定义的顺序提供套件,而非响应客户端偏好 - 若 OpenSSL 编译时已剔除 RC4,就只能依赖
AES128-SHA,并确认其在openssl ciphers -s -tls1_0输出中可见










