HTTPS 开销与 HTTP 相比

Wiz*_*d79 9 performance https

HTTPS 是 HTTP 的加密版本,如今加密所有 Web 流量(不仅仅是敏感流量)已成为一种普遍做法。

除了需要购买昂贵的证书和依赖第三方证书颁发机构之外,HTTPS 的缺点是增加了 CPU 负载(用于实际加密)和带宽消耗(用于附加协议协商)。

这种开销不仅是服务器端的问题,也是客户端感知到的更高延迟。

在 CPU 负载、带宽和延迟方面的实际开销是多少?

减少这种开销的最新技术(软件、硬件和最佳实践)是什么?

HBr*_*ijn 13

  • 价格:有大量 CA 和经销商提供支持良好的 SSL 证书,这些证书甚至可以为您妈妈的食谱网站买得起,更不用说商业用途了。除了一些免费的,比如啤酒,其他的仍然比一品脱便宜。所以没有问题。

  • 切换到 HTTPS 会增加延迟:在建立连接之前,初始 SSL 握手需要两次额外的往返,相比之下,建立到普通未加密 HTTP 端口的 TCP 连接只需要一次往返。因此,您的用户收到第一个数据之前需要三倍的时间。

来自:Ilya Grigorik 的高性能浏览器网络

  • 带宽增加:由于协议原因,报头大小会增加一些字节,因此使用的带宽会略有增加,有效载荷会因帧开销而减少,一些密码也会使用填充。假设一个常见的 MTU 为 1500 字节的数据包大小;HTTPS 协议开销仍然会留下至少 1400 字节的有效负载数据大小,因此带宽最多增加 6-7%。

  • CPU 负载:计算成本最高的部分是公钥交换,然后使用相对高效的对称密码。大多数引用表明现代商品硬件不需要 SSL 卸载卡来处理该开销。

今年 1 月(2010 年),Gmail 转为默认使用 HTTPS。以前它是作为一个选项引入的,但现在我们所有的用户都使用 HTTPS 来保护他们的浏览器和 Google 之间的电子邮件。为了做到这一点,我们不必部署额外的机器,也没有特殊的硬件。在我们的生产前端机器上,SSL/TLS 占 CPU 负载的不到 1%,每个连接的内存不到 10 KB,网络开销不到 2%。许多人认为 SSL/TLS 需要大量 CPU 时间,我们希望前面的数字(首次公开)有助于消除这一点。

如果您现在停止阅读,您只需要记住一件事:SSL/TLS 在计算上不再昂贵。——亚当兰利(谷歌)

一个很好的资源是来自Ilya Grigorik 的High Performance Browser Networking的第 4 章

总之,除了建立新连接的延迟外,开销可以忽略不计。

什么是最好的,这取决于您的需求......例如,当您还需要 SSL 支持时,使用 CDN 可能会变得更加昂贵。

  • 是的,有免费的证书选项。最著名的是**[LetsEncrypt.org](https://letsencrypt.org/)** (2认同)