apache禁用不安全旧版tls协议,核心是在块内配置sslprotocol all -sslv2 -sslv3 -tlsv1 -tlsv1.1 +tlsv1.2 +tlsv1.3,并同步设置强sslciphersuite、sslhonorcipherorder on及sslcompression off,最后通过openssl命令和ssl labs验证生效。

Apache 中禁用不安全的旧版本 TLS 协议,核心是明确排除 SSLv2、SSLv3、TLSv1.0 和 TLSv1.1,只保留 TLSv1.2 和 TLSv1.3,并确保该设置在 HTTPS 流量实际处理的位置生效。
必须写在 块内
SSLProtocol 指令只有放在启用 HTTPS 的虚拟主机配置块中才真正起作用。全局配置或 http 块里的设置可能被忽略,无法保障单个站点的安全性。
- 找到你站点的
<virtualhost></virtualhost>区域(通常在/etc/apache2/sites-enabled/或/etc/httpd/conf.d/下) - 确认该块中已启用
SSLEngine on - 在此块内添加或修改协议行,不要放在其他位置
推荐的协议配置写法
使用“全量排除 + 显式启用”方式,兼容性强且不易出错:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3- 如果 Apache ≥2.4.37 且 OpenSSL ≥1.1.1,也可简写为:
SSLProtocol +TLSv1.2 +TLSv1.3 - 避免使用
all -TLSv1.0 -TLSv1.1这类写法——部分旧版 Apache 对“TLSv1.0”识别不稳定,容易漏禁
配套必须同步设置
仅改协议不够,攻击者可能通过降级协商绕过限制:
-
SSLCipherSuite:指定强套件,如ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 -
SSLHonorCipherOrder on:强制服务端按你写的顺序选套件,防止客户端挑弱的 -
SSLCompression off:关闭压缩,防 CRIME 攻击
验证是否真正生效
重启 Apache 后必须实测,不能只看配置语法正确:
- 本地命令测试:
openssl s_client -connect yoursite.com:443 -tls1_1应返回握手失败或空响应 - 同理测试
-ssl3、-tls1,都应失败 - 在线检测:用 SSL Labs(https://www.ssllabs.com/ssltest/)查看 “Protocols” 表格,TLS 1.0/1.1 必须显示为 ❌ 或 Not supported










