apache启用tls 1.2和tls 1.3需显式配置sslprotocol +tlsv1.2 +tlsv1.3,确保openssl≥1.1.1且apache≥2.4.37,搭配tls 1.3专用套件及sslhonorcipherorder on,并通过openssl s_client实测验证。

在 Apache 中启用 TLS 1.2 和 TLS 1.3,核心不是“打开新功能”,而是**显式声明只接受这两个版本,并确保底层环境真正支持**。配置写错、OpenSSL 版本不够或密钥套件不匹配,都会导致协议无法协商成功。
确认底层依赖是否达标
Apache 自身不实现 TLS,它通过 mod_ssl 调用 OpenSSL。如果 OpenSSL 不支持,配置再正确也无效。
- 运行
openssl version -a,确认输出含 OpenSSL 1.1.1w、3.0.13 或更高版本(TLS 1.3 必须 ≥1.1.1) - 运行
httpd -V | grep -i openssl,检查 Apache 编译时链接的 OpenSSL 路径与上一步一致 - 若显示
OpenSSL 1.0.2k或更低,需先升级系统 OpenSSL 或重新编译 Apache
正确配置 SSLProtocol 指令
使用白名单方式,语义明确、行为可控。避免 all -SSLv3 -TLSv1 这类写法——它可能意外禁用 TLS 1.2,或未来引入新协议时带来风险。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- Apache ≥ 2.4.37 + OpenSSL ≥ 1.1.1:写为
SSLProtocol +TLSv1.2 +TLSv1.3 - Apache SSLProtocol TLSv1.2 TLSv1.3
- 务必同时包含两者——仅启 TLS 1.3 会断开 Java 8u251、Android 4.4 等大量合法客户端
配套设置密钥套件与协商逻辑
只设协议不设套件,仍可能被诱导回退到弱加密;TLS 1.3 套件不能和 TLS 1.2 混用,否则协商失败。
- TLS 1.3 专用套件(必须单独列出):
SSLCipherSuite TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 - TLS 1.2 强套件(可另起一行或合并,但建议分开管理):
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 - 强制服务端优先级:
SSLHonorCipherOrder on,防止客户端干扰套件选择
验证是否真实生效
重启 Apache 后,不能只看浏览器小锁图标,要查协议层实际协商结果。
- 测试 TLS 1.3:
openssl s_client -connect example.com:443 -tls1_3 2>/dev/null | grep "Protocol",应输出Protocol : TLSv1.3 - 测试 TLS 1.2 回退:
openssl s_client -connect example.com:443 -tls1_2 2>/dev/null | grep "Protocol",应返回TLSv1.2 - 用 SSL Labs Test 全面扫描,查看 TLS 1.3 支持状态、兼容性警告及具体套件列表










