![使用 SSL 的 Chrome 出现“连接未压缩”](https://linux22.com/image/575455/%E4%BD%BF%E7%94%A8%20SSL%20%E7%9A%84%20Chrome%20%E5%87%BA%E7%8E%B0%E2%80%9C%E8%BF%9E%E6%8E%A5%E6%9C%AA%E5%8E%8B%E7%BC%A9%E2%80%9D.png)
我在 Ubuntu 10.04LTS 上运行带有 SSL 的 nginx。当我检查证书时,Chrome 给出了这个烦人的警告:
The connection is not compressed.
在响应中它看起来像是被 gzip 压缩了一样:
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Sun, 12 Feb 2012 09:00:38 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:nginx/1.0.5
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.6-13ubuntu3.3`
答案1
The connection is not compressed.
与 SSL 压缩有关,与 gzip 无关。由于您响应的是 gzip 压缩,因此无需在 SSL 级别启用压缩。
也可以看看:http://www.belshe.com/2010/11/18/ssl-compression-and-you/
答案2
自从提出这个问题以来,发现了一个严重的安全漏洞(BEAST 攻击),这使得它如果 SSL/TLS 会话被压缩,则可能会损害 SSL/TLS 会话。为了缓解这种情况,服务器和浏览器都开始禁用压缩;您将需要改用 HTTP 压缩,并且即使使用也只能少量使用,以缓解另一个漏洞(CRIME 攻击)。
答案3
SSL 压缩在 Nginx 中故意禁用。显然是为了节省内存。这可能是有道理的,因为 Chrome 是我所知道的唯一支持 SSL 压缩的浏览器。
我专门使用 Apache 来实现此功能,因为 SSL 压缩通过压缩整个双向流(而不仅仅是响应主体)节省了大量带宽。在我的应用程序(ERP Web 客户端)中,压缩的 SSL 流使用的带宽比 http 压缩少 30% 到 50%。因此,只需让用户使用 Chrome 就可以节省大量带宽。
如果你想切换到 Apache,请检查我的问题有关禁用 http 压缩以增强性能的信息。