SSLCompression必须关闭,因其是TLS早期压缩机制,易受CRIME攻击窃取Cookie,无性能收益且现代环境默认禁用。

SSLCompression 不需要权衡——它必须关闭。这个选项不提升传输效率,只增加被 CRIME 攻击窃取 Cookie 的确定性风险,现代环境里没有启用理由。
为什么 SSLCompression 必须关,而不是“权衡”
SSLCompression 是 TLS 1.0/1.1 时代支持的加密前压缩机制(RFC 3749),原理是对明文做 LZ77 压缩再加密。但 CRIME 攻击(2012 年公开)利用压缩率与密文长度的关联,可逐字节还原加密 Cookie 等敏感字段。该漏洞无法缓解,只能禁用压缩本身。
- OpenSSL 1.0.0+ 默认禁用 TLS 压缩,Apache 2.4.8+ 默认关闭 SSLCompression
- 实测表明:开启后无带宽节省收益(HTTP 层已有 gzip/br 压缩),反而增加握手延迟和 CPU 开销
- 所有主流浏览器(Chrome、Firefox、Safari)已移除对 TLS 压缩的支持
确认是否已开启 SSLCompression 的可靠方法
别只查配置文件——模块加载顺序、虚拟主机继承、SSLEngine 是否启用都会影响最终行为:
- 运行
openssl s_client -connect your-domain.com:443 -tls1_2,查看输出中是否有Compression: zlib或类似字样(有即为开启) - 检查 Apache 配置中是否误写
SSLCompression on,或在SSLProtocol后追加了-COMPRESS - 执行
httpd -M | grep ssl确认 ssl_module 已加载,并用openssl version核对版本(低于 1.0.1 需先升级 OpenSSL)
正确关闭 SSLCompression 的操作步骤
该指令仅允许出现在服务器级或 <virtualhost></virtualhost> 块内,.htaccess 中无效:
- 在主配置(如
/etc/apache2/mods-available/ssl.conf)或对应虚拟主机段中添加:SSLCompression off - 旧版 Apache(2.4.7 及更早)若使用
SSLProtocol,应写成:SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 -COMPRESS - 重启前验证:
apachectl configtest;生效后再次用openssl s_client复测,确认输出中Compression:行完全消失
别把 mod_deflate 和 SSLCompression 搞混
mod_deflate 是 HTTP 层压缩(作用于响应体明文),与 TLS 压缩无关。但它在 HTTPS 站点上若滥用,可能引发 Content-Encoding 冲突:
- 避免对
/login、/api等敏感路径无条件启用 deflate - 检查配置中是否有
SetOutputFilter DEFLATE全局匹配application/json或text/html - 用
curl -I https://yoursite.com查看响应头,确认未对含Set-Cookie的响应错误添加Content-Encoding: gzip


















