必须关闭SSLCompression,因其会触发CRIME攻击风险;现代Apache默认禁用,应显式配置SSLCompression off,并启用mod_deflate实现安全的HTTP层压缩。

SSLCompression on 会触发 CRIME 攻击风险
直接在 SSLCompression on 后重启 Apache,看似生效,实则埋下严重安全隐患。CRIME 攻击利用 TLS 层压缩与 Cookie 的交互特性,可恢复加密流量中的敏感字段(如 session ID、CSRF token)。2012 年公开后,主流浏览器已默认禁用 TLS 压缩,OpenSSL 1.1.0+ 更是直接移除了 zlib 压缩支持。
即便你确认“非敏感场景”,只要服务暴露在公网、存在登录态或任何带 Cookie 的交互,SSLCompression on 就不该启用。这不是性能取舍问题,而是协议层已被证实不可修复的缺陷。
真正该启用的是 HTTP 层压缩(mod_deflate)
用户真正需要的“压缩效果”,99% 场景下应由 mod_deflate 在 HTTP 响应体层面完成,它不触碰 TLS 握手与记录层,完全规避 CRIME 风险。
- 确保模块已启用:
a2enmod deflate(Ubuntu/Debian)或检查LoadModule deflate_module modules/mod_deflate.so(CentOS/RHEL) - 在 SSL 虚拟主机配置块内添加:
AddOutputFilterByType DEFLATE text/html text/css application/javascript application/json - 排除二进制文件(避免损坏):
SetEnvIfNoCase Request_URI \.(?:png|jpg|gif|pdf|mp4|woff2)$ no-gzip - 不要设
DeflateCompressionLevel 9—— 级别 6 已足够,级别 9 显著增加 CPU 开销且收益极小
SSLCompression on 在现代 Apache 中大概率无效
Apache 2.4.37+ 默认链接 OpenSSL 1.1.1 或更新版本,而这些 OpenSSL 版本编译时已禁用 zlib 压缩。即使你在配置里写 SSLCompression on,openssl s_client -connect example.com:443 -tls1_2 查看输出时,Compression: NONE 是常态,不是配置遗漏,是底层根本不可用。
验证方法:运行 apache2ctl -M | grep ssl(Ubuntu)或 httpd -M | grep ssl(CentOS),再查 OpenSSL 版本:openssl version。若为 1.1.1x 或 3.x,SSLCompression 指令实际被忽略,日志里也不会报错 —— 它只是安静地失效。
国密(SM2)或旧版 OpenSSL 环境需额外警惕
少数政企环境仍在用定制 OpenSSL(如支持 SM2 的国密套件)或老旧发行版(CentOS 7 默认 OpenSSL 1.0.2),此时 SSLCompression on 可能仍能启用,但风险更高:旧版 OpenSSL 补丁滞后,且国密 TLS 实现对压缩的防护更不透明。
若必须兼容此类环境,请明确拒绝 SSLCompression on,转而强化 HTTP 压缩 + 启用 Brotli(需额外编译 mod_brotli)—— 它比 gzip 效率高 15–20%,且同样工作在应用层,无协议级风险。


















