Apache中禁用TLS 1.0/1.1须在<VirtualHost *:443>内配置SSLProtocol -all +TLSv1.2 +TLSv1.3,配合SSLCipherSuite指定强套件并启用SSLHonorCipherOrder on,同时确保后端服务(如Tomcat、JDK)同步禁用旧协议。
在 apache 中禁用 tls 1.0 和 tls 1.1,核心是明确指定只启用 tls 1.2 及以上版本,并确保配置落在正确的上下文位置。这不是可选优化,而是当前合规(如 pci dss、等保2.0)和浏览器兼容的强制要求。
必须写在虚拟主机配置中
SSL 协议控制指令 SSLProtocol 必须放在 <VirtualHost *:443> 块内,不能仅写在全局 ssl.conf 或主配置文件顶部。Apache 不支持跨虚拟主机继承该指令,每个 HTTPS 站点都需单独配置,漏掉一个就等于留了一个入口。
- ✅ 正确写法:
SSLProtocol -all +TLSv1.2 +TLSv1.3 - ❌ 错误写法:
SSLProtocol all -TLSv1 -TLSv1.1(Apache 不识别TLSv1这种简写,会误启 TLS 1.0) - ❌ 错误写法:
SSLProtocol TLSv1.2 TLSv1.3(缺少-all前置,旧协议仍可能被隐式启用)
同步收紧加密套件
仅限制协议版本远远不够。若仍允许 RC4、3DES、AES128-SHA 等弱套件,攻击者可在 TLS 1.2 握手中协商出可破解连接。需配合 SSLCipherSuite 指令显式声明强套件,并关闭客户端优先权:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 推荐套件(兼顾安全与兼容性):
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384 - 禁用弱算法:
SSLHonorCipherOrder on(强制服务端优先) - 额外加固:
SSLCompression off(防 CRIME 攻击)、SSLSessionTickets off(防会话重放)
验证是否真正生效
配置重载后(sudo systemctl reload apache2),务必实测,不能只依赖语法检查:
- 测试 TLS 1.1 是否被拒:
openssl s_client -connect example.com:443 -tls1_1 -servername example.com→ 应返回handshake failure或无响应 - 测试 TLS 1.2 是否可用:
openssl s_client -connect example.com:443 -tls1_2 -servername example.com 2>/dev/null | grep "Protocol"→ 应显示Protocol : TLSv1.2 - 在线辅助验证:可用 SSL Labs Test 全面扫描协议支持、套件强度与证书链
注意 Java 后端组件的联动
若 Apache 作为反向代理(如连 Tomcat),还需确认后端服务自身也禁用了旧协议。例如 Tomcat 的 server.xml 中 Connector 需设置:sslEnabledProtocols="TLSv1.2,TLSv1.3";JDK 层面(如使用 JDK 8u291+)应在 $JAVA_HOME/jre/lib/security/java.security 中追加:jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1。前后端协议策略不一致,可能导致握手失败或降级风险。

















