apache禁用tls1.0和tls1.1需在虚拟主机配置块中设置sslprotocol指令,推荐写法为sslprotocol all -sslv2 -sslv3 -tlsv1 -tlsv1.1,并同步配置sslciphersuite与sslhonorcipherorder以确保安全生效。
可以直接在对应虚拟主机的配置块内设置 sslprotocol 指令,精准控制该站点允许的 tls 协议版本,无需全局修改。
确认 Apache 版本与 OpenSSL 支持
禁用 TLSv1.1 等旧协议前,需确保底层环境支持目标配置:
- Apache ≥ 2.4.26 才能可靠解析
all -TLSv1.1这类写法 - OpenSSL ≥ 1.0.1f 是启用 TLSv1.2 的最低要求;若要启用 TLSv1.3,需 OpenSSL ≥ 1.1.1 且 Apache ≥ 2.4.37
- 执行
httpd -M | grep ssl确认 mod_ssl 已加载,openssl version查看实际版本
在虚拟主机中配置 SSLProtocol
将指令写入 <virtualhost></virtualhost> 块内(通常位于 ssl.conf、000-default-le-ssl.conf 或独立站点配置文件中):
- 推荐写法(显式剔除不安全版本):
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 - 更明确写法(仅启用强版本):
SSLProtocol +TLSv1.2 +TLSv1.3(需环境支持 TLSv1.3) - 避免只写
SSLProtocol TLSv1.2—— Apache 会忽略未列出的版本,但部分旧版本行为不一致,显式排除更稳妥
必须同步配置 SSLCipherSuite 和 SSLHonorCipherOrder
仅禁用 TLSv1.1 不足以提升安全评级,客户端仍可能协商出弱套件。需配套设置:
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305-
SSLHonorCipherOrder on—— 强制服务端优先级生效,防止客户端降级 - 可选但建议:
SSLCompression off防止 CRIME 攻击
验证配置是否生效
重启 Apache 后,用以下方式确认 TLSv1.1 已被禁用:
- 命令行测试:
openssl s_client -connect yourdomain.com:443 -tls1_1—— 应返回握手失败或 “no protocols available” - 在线检测:使用 SSL Labs 的 SSL Server Test,查看 “Handshake Simulation” 中 TLSv1.1 列是否显示 “No”
- 检查错误日志:
tail -f /var/log/apache2/error.log,启动时若配置语法错误会直接报出











