HTTPS 是 HTTP 的加密版本,如今加密所有网络流量(不仅仅是敏感流量)已成为一种常见做法。
HTTPS 的缺点除了需要购买昂贵的证书和依赖第三方认证机构之外,还增加了 CPU 负载(用于实际加密)和带宽消耗(用于附加协议协商)。
这种开销不仅是服务器端的问题,而且客户端还会感觉到更高的延迟。
CPU 负载、带宽和延迟方面的实际开销是多少?
有哪些最先进的技术(软件、硬件和最佳实践)可以减少这种开销?
答案1
2024 年更新如下
价格:有很多 CA 和经销商提供得到良好支持的 SSL 证书,这些证书甚至连你妈妈的食谱网站都可以负担得起,更不用说用于商业用途了。除了几个免费的证书(如啤酒)外,其他证书的价格仍然比一品脱啤酒还便宜。所以这没什么问题。
切换到 HTTPS 后延迟增加:初始 SSL 握手需要两次额外的往返才能建立连接,而建立到普通未加密 HTTP 端口的 TCP 连接只需要一次往返。因此,实际上,用户收到第一笔数据所需的时间是原来的三倍。
带宽增加:由于协议原因,标头大小会增加一些字节,而有效负载会因帧开销而减少,因此使用的带宽会略有增加,并且某些密码也会使用填充。假设常见的 MTU 为 1500 字节数据包大小;HTTPS 协议开销仍将留下至少 1400 字节的有效负载数据大小,因此带宽最多增加 6-7%。
CPU 负载:计算成本最高的部分是公钥交换,之后使用相对高效的对称密码。大多数引用表明,现代商品硬件不需要 SSL 卸载卡来处理该开销。
今年 (2010) 一月,Gmail 默认将 HTTPS 用于所有操作。此前,HTTPS 只是作为选项引入的,但现在我们所有的用户都始终使用 HTTPS 来保护浏览器和 Google 之间的电子邮件安全。为了做到这一点,我们无需部署额外的机器和特殊硬件。在我们的生产前端机器上,SSL/TLS 占 CPU 负载的不到 1%,每个连接占用的内存不到 10 KB,占网络开销的不到 2%。许多人认为 SSL/TLS 占用了大量的 CPU 时间,我们希望上述数字(首次公开)有助于消除这种想法。
如果您现在停止阅读,您只需记住一件事:SSL / TLS不再是计算昂贵的。 -亚当·兰利(谷歌)
一个很好的资源是第 4 章高性能浏览器网络作者 Ilya Grigorik
总之,除了建立新连接的延迟之外的开销可以忽略不计。
什么是最好的,这取决于您的需求...例如,当您还需要 SSL 支持时,使用 CDN 可能会变得更加昂贵。
2024 年 - 10 年后
HTTPS 无处不在,互联网比以往更快。
价格:2016年让我们加密公开可用,并显著改变了格局。他们的 ACME 客户端 certbot(和其他实现)使获取有效且被广泛接受的证书完全免费,并且部署起来也非常简单。
潜伏:或多或少并行的协议改进导致了TLS 1.3消除了握手中的额外步骤:
CPU 负载:当然,所有 CPU,不仅是服务器 CPU,还有家用电器、智能手机等中的更轻量级的 CPU,现在都内置了将加密计算卸载到硅片上的支持。
因此,几乎没有任何相关网站不能在 HTTPS 上使用,大多数普通 HTTP 网站仅存在于重定向到 HTTPS。
浏览器可以配置为默认使用 HTTPS以避免首先转到纯 HTTP 然后再重定向到 HTTPS 的延迟。还有类似的事情高速传输系统甚至完整的顶级域名不再允许任何网站使用纯 HTTP,因为它们位于HSTS 预加载列表即使你手动输入HTTP://some.example.dev
浏览器也会立即转到HTTPS://some.example.dev
。例如:需要 HTTPS 连接的顶级域名 (TLD) 列表,例如 .dev
网站不会显示“安全”且使用 HTTPS 和有效证书,也不会显示“绿色条”(当网站使用扩展验证证书时),浏览器已经开始在网站发生不安全而在 HTTPS 上不可用。