apache默认已防御ssl重协商攻击(cve-2009-3555),因2.2.15+版本默认sslinsecurerenegotiation off;需确认mod_ssl启用、禁用老旧协议(-sslv2 -tlsv1.1)、锁定强密码套件,并用openssl或testssl.sh实测验证防护生效。

Apache 默认已防御 SSL 重协商攻击(CVE-2009-3555),无需额外操作;关键是在确认不必要的情况下,**保持默认禁用状态**,并配合其他 TLS 安全配置形成纵深防护。
确认 mod_ssl 版本与默认行为
Apache 2.2.15 及以上版本(含全部 2.4.x 稳定版)中,SSLInsecureRenegotiation off 是硬编码默认值,无需显式配置。你只需验证:
- 运行
apache2 -v或httpd -v,确保版本 ≥ 2.2.15(推荐 2.4.53+) - 检查 mod_ssl 是否启用:
apache2ctl -M | grep ssl(Debian/Ubuntu)或httpd -M | grep ssl(RHEL/CentOS) - 若输出含
ssl_module (shared),说明模块已加载
核心防护配置(必须落实)
仅关闭不安全重协商不够,需同步收紧协议与密码套件:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
禁用老旧协议:在虚拟主机或全局 SSL 配置段中添加
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3 -
锁定强密码套件:优先选用 ECDHE + AES-GCM 或 ChaCha20-Poly1305
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 -
强制服务端套件优先级:
SSLHonorCipherOrder on
验证是否真正生效
不能只看配置,必须实测重协商响应行为:
- 用 OpenSSL 模拟不安全重协商:
openssl s_client -connect example.com:443 -reconnect
若连接中断或返回SSL alert number 100,说明防护有效;若进入RENEGOTIATING阶段并完成,则配置未生效或被覆盖 - 使用
testssl.sh --reneg example.com,结果应为 Secure renegotiation IS supported(即仅支持 RFC 5746 安全重协商)
避免常见误操作
这些做法看似“加固”,实则无效甚至有害:
- 把 SSLStrictSNIVHostCheck on 当作防重协商手段——它只管 SNI 主机名匹配,与重协商完全无关
- 在 .htaccess 或非 SSL 虚拟主机中写
SSLInsecureRenegotiation on——该指令仅在 HTTPS<virtualhost></virtualhost>内有效,且全局开启会扩大攻击面 - 启用
SSLVerifyClient require的同时打开不安全重协商——这会显著放大中间人劫持风险,应严格避免









