你能通过SSL使用gzip吗?和连接:保持活动标头

你能通过SSL使用gzip吗?和连接:保持活动标头,ssl,https,compression,gzip,Ssl,Https,Compression,Gzip,我正在评估安全(SSL)web应用程序的前端性能,我想知道是否可以通过SSL压缩文本文件(html/css/javascript)。我在谷歌上搜索了一下,但没有找到任何与SSL相关的东西。如果可能的话,由于响应也被加密,所以额外的CPU周期值吗?压缩响应会影响性能吗 此外,我还想确保SSL连接保持活动状态,这样我们就不会一次又一次地进行SSL握手。我没有在响应标题中看到连接:保持活动。我确实在请求标题中看到了Keep Alive:115,但这只会使连接保持115毫秒的活动状态(似乎在处理单个请求

我正在评估安全(SSL)web应用程序的前端性能,我想知道是否可以通过SSL压缩文本文件(html/css/javascript)。我在谷歌上搜索了一下,但没有找到任何与SSL相关的东西。如果可能的话,由于响应也被加密,所以额外的CPU周期值吗?压缩响应会影响性能吗

此外,我还想确保SSL连接保持活动状态,这样我们就不会一次又一次地进行SSL握手。我没有在响应标题中看到连接:保持活动。我确实在请求标题中看到了Keep Alive:115,但这只会使连接保持115毫秒的活动状态(似乎在处理单个请求后应用服务器正在关闭连接?)您不希望服务器在会话不活动超时期间设置该响应头吗


我知道浏览器不会将SSL内容缓存到磁盘,所以我们在后续访问中一遍又一遍地提供相同的文件,即使没有任何更改。主要的优化建议是减少http请求的数量、缩小规模、将脚本移动到底部、图像优化、可能的域切分(尽管需要权衡另一次SSL握手的成本)以及类似的事情。

对于第一个问题,SSL的工作层与压缩层不同。从某种意义上说,这两个功能是web服务器的功能,可以一起工作,而不是重叠。是的,通过启用压缩,您将在服务器上使用更多的CPU,但传出流量更少。所以这更像是一种权衡


关于第二个问题:保持活动状态行为实际上取决于HTTP版本。您可以将静态内容移动到非ssl服务器(可能包括图像、电影、音频等)

是的,可以通过ssl使用压缩;它发生在数据加密之前,因此可以帮助克服慢速链接。应该注意,这是一个坏主意:

在初始握手之后,SSL的开销比许多人想象的要小*-即使客户端重新连接,也有一种机制可以继续现有会话,而无需重新协商密钥,从而减少CPU使用量和往返次数

不过,负载平衡器可能会破坏延续机制:如果请求在服务器之间交替,则需要更多的完整握手,这可能会产生明显的影响(每个请求大约几百毫秒)。将负载平衡器配置为将来自同一IP的所有请求转发到同一应用服务器

您正在使用哪个应用程序服务器?如果它不能被配置为使用保持生存、压缩文件等等,那么考虑将它放在反向代理后面,这样可以(当您在它时,放松带有静态内容发送的缓存头)。HttpWatchSupport的链接文章在这方面有一些有用的提示。
(*SSL硬件供应商会说“CPU高达5倍”,但一些人报告说,当Gmail默认使用SSL时,它只占约1%的CPU负载)

使用SSL压缩会使您面临漏洞,如漏洞、犯罪或其他选择的纯文本攻击

您应该禁用压缩,因为SSL/TLS目前无法抵御这些oracle攻击

  • 您可能永远不应该使用TLS压缩。一些用户代理(至少是Chrome)无论如何都会禁用它

  • 您可以有选择地使用HTTP压缩

  • 你总是可以缩小

  • 我们也来谈谈缓存

  • 我假设您使用的是HTTPS Everywhere样式的网站

    情景:

  • 静态内容,如css或js:

    • 使用HTTP压缩
    • 使用缩小
    • 缓存周期长(如一年)
    • etag只是略微有用(因为缓存很长)
    • 在HTML中的URL中包含指向此资产的某种版本号,以便缓存该资产
  • 零敏感信息的HTML内容(如关于我们的页面):

    • 使用HTTP压缩
    • 使用HTML缩小
    • 使用较短的缓存周期
    • 使用etag
  • 包含任何敏感信息的HTML内容(如CSRF令牌或银行账号):

    • 没有HTTP压缩
    • 使用HTML缩小
    • 缓存控制:无存储,必须重新验证
    • etag在这里毫无意义(由于重新验证)
    • 会话超时后重定向页面的一些逻辑(考虑多个选项卡)。如果有人按下浏览器的后退按钮,则由于缓存标头的原因,敏感信息不会显示
  • 在以下情况下,可以对敏感数据使用HTTP压缩:

  • 您从未在响应中返回用户输入(有搜索框吗?不要使用HTTP压缩)
  • 或者在响应中返回用户输入,但随机填充响应

  • 无法将资产移动到非ssl服务器,我们将获得混合内容浏览器安全消息“此页面包含安全和非安全项目”(或类似内容)。这取决于浏览器。有些人这样做,有些人不这样做。Firefox将在即将发布的版本中删除此消息。非常感谢。我刚在我的网站上安装了ssl,我真的很担心它的性能,并在考虑如何进一步调整它。任何帮助都将非常感谢。不要使用刷新标题将用户发送到登录页面。实际上,您可以让用户永远保持登录状态。场景:假设会话在不活动20分钟后过期。用户在下午1点打开浏览器选项卡A,然后在下午1:10打开另一个选项卡B。下午1:21,选项卡A将刷新,但他没有注销,因为选项卡B将其活动超时重置为1:30。这两个选项卡将永远来回,刷新页面并保持用户登录。其他好帖子:p