apache不能强制仅用tls 1.3,应显式启用tls 1.2和tls 1.3并禁用更早协议,前提是apache≥2.4.37、openssl≥1.1.1;配置sslprotocol all -sslv2 -sslv3 -tlsv1 -tlsv1.1 +tlsv1.2 +tlsv1.3,并配tls 1.3专用套件及sslhonorcipherorder on。

Apache 不能真正“强制仅用 TLS 1.3”,因为这会切断所有不支持 TLS 1.3 的合法客户端(如旧版 Java 应用、Android 4.x、部分嵌入式设备等)。实际可行的做法是:**显式启用 TLS 1.3 + TLS 1.2,同时禁用所有更早协议**,确保现代客户端优先协商 TLS 1.3,老旧客户端回退到 TLS 1.2 —— 这是生产环境的安全与兼容平衡点。
确认前提条件是否满足
在改配置前,必须验证底层支撑已就位:
- Apache 版本 ≥ 2.4.37(推荐 2.4.48+)
- OpenSSL 版本 ≥ 1.1.1(运行 openssl version -a 和 httpd -V | grep -i openssl 双重确认)
- mod_ssl 已启用(httpd -M | grep ssl 应显示 shared)
- 证书为有效 PEM 格式,私钥未加密或已正确配置解密方式
在 httpd.conf 或虚拟主机块中设置协议策略
不要写 SSLProtocol TLSv1.3 —— 这会彻底关闭 TLS 1.2,导致大量连接失败。应使用明确增减语法:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3
说明:
- all 表示初始启用全部已知协议
- -XXX 显式禁用不安全旧版本
- +TLSv1.2 +TLSv1.3 确保两者都可用,由客户端能力决定最终协商结果
配套关键配置(缺一不可)
TLS 1.3 启用后若无对应密钥套件和参数,仍可能降级或握手失败:
- 只保留 TLS 1.3 专用套件(必须):
SSLCipherSuite TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 - 禁用 TLS 1.2 套件混用(否则协商失败):
不要在该指令中出现 ECDHE、AES256-SHA 等 TLS 1.2 套件 - 开启套件顺序控制:
SSLHonorCipherOrder on(虽对 TLS 1.3 无实质影响,但保持配置一致性) - 确保 SSLEngine on 已启用,且证书路径正确(SSLCertificateFile / SSLCertificateKeyFile)
验证是否生效
重启服务后,用以下任一方式确认:
- 终端测试:openssl s_client -connect yourdomain.com:443 -tls1_3 2>/dev/null | grep Protocol → 应输出 Protocol : TLSv1.3
- Chrome/Firefox 开发者工具 → Security 标签页 → 查看“Connection”详情
- SSL Labs 免费检测(ssllabs.com/ssltest)→ 检查 “Handshake Simulation” 中各客户端是否成功协商 TLS 1.3










