apache 防护 cve-2011-1473 的关键是显式配置 sslinsecurerenegotiation off,而非仅依赖版本;需验证 apache ≥2.2.15、mod_ssl 启用、禁用老旧协议,并用 openssl s_client 输入 r 测试连接是否立即中断。
apache 中排查 tls 重协商漏洞(cve-2011-1473)关键不在于“有没有开启重协商”,而在于是否允许不安全的客户端发起的重协商。现代 apache(≥2.2.15)默认已禁用该行为,但配置遗漏、版本过旧或测试方式不当,仍可能导致误判或真实风险残留。
确认 Apache 版本与 mod_ssl 状态
旧版本 Apache 默认允许不安全重协商,必须先验证基础环境:
- 运行
httpd -v或apache2 -v,确保版本 ≥ 2.2.15;强烈推荐使用 2.4.37+ 或最新稳定版(如 2.4.62),以获得 TLS 1.3 和完整 RFC 5746 支持 - 检查 mod_ssl 是否启用:
httpd -M | grep ssl,输出应含ssl_module (shared);若无,需执行a2enmod ssl(Debian/Ubuntu)或手动加载LoadModule ssl_module modules/mod_ssl.so - 若为自编译安装,确认 configure 时包含
--enable-ssl且 OpenSSL ≥ 1.0.1(RFC 5746 要求)
核查核心防护配置项
仅靠版本达标不够,必须显式确认以下配置存在于 SSL 虚拟主机段或全局 ssl.conf 中:
-
SSLInsecureRenegotiation off—— 这是防御的核心开关,明确拒绝客户端发起的不安全重协商;2.2.15+ 默认即为off,但不可依赖默认,务必在配置中显式写出 -
SSLStrictSNIVHostCheck on—— 强化 SNI 校验,防止域名混淆类绕过(辅助加固) -
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1—— 禁用所有已淘汰协议,避免因协议降级引入重协商兼容路径
修改后必须重启服务:systemctl restart apache2(Debian/Ubuntu)或 systemctl restart httpd(RHEL/CentOS)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
用 openssl 主动验证是否生效
不能依赖浏览器或扫描工具的模糊提示,需用命令直连测试:
- 执行:
openssl s_client -connect example.com:443 -reconnect - 连接建立后,手动输入大写字母
R并回车(触发重协商) - 若配置有效,连接会立即中断,并在输出末尾看到类似
SSL alert number 100或read:errno=0;若继续显示RENEGOTIATING并完成握手,则说明漏洞仍存在 - 更可靠的方式是使用
testssl.sh:./testssl.sh --reneg example.com,结果应为Secure renegotiation IS supported(表示仅支持带 RFC 5746 扩展的安全重协商)
检查错误日志中的握手线索
重协商相关异常通常记录在 error_log,需提升日志级别辅助判断:
- 临时设置:
LogLevel info ssl:debug,重启后观察日志 - 搜索关键词:
insecure renegotiation、SSL_renegotiate、SSL_accept failed、no shared cipher - 重点关注 Client Hello 段:若日志中出现客户端声称支持
renegotiation_info扩展,但服务器未响应或拒绝,说明防护已介入
不复杂但容易忽略——真正的防护不是“没报错”,而是“主动拒绝并留下可验证痕迹”。









