为什么浏览器实现HTTP/2需要TLS?

20

为什么大多数现代浏览器要求使用TLS协议来进行HTTP2通信?

这是有技术原因吗?还是仅仅为了让网络更加安全?

http://caniuse.com/#feat=http2


1
尽管标准本身并不要求使用加密,但大多数客户端实现(Firefox、Chrome、Safari、Opera、IE、Edge)已经声明,它们只支持通过TLS的HTTP/2。 - robertklep
https://www.youtube.com/watch?v=r5oT_2ndjms - Kevin B
1个回答

29

这部分涉及推广HTTPS的应用,鼓励用户和服务器使用HTTPS。火狐和Chrome的开发者都认为这是一种好的趋势,有助于保护用户的安全和隐私。

此外,它也是为了避免中间人攻击而进行的。互联网上有许多"中间盒子"错误地将TCP端口80上的流量(看起来像是HTTP/1.1)视为HTTP/1.1,并干扰或过滤该流量。在这样的网络上进行明文HTTP/2传输会导致成功率大大降低。坚持加密可以防止这些中间人干扰流量。

此外,部署的HTTP/1.1服务器中有一定比例的服务器将对未知协议(如"h2c",即明文HTTP/2)的升级请求返回错误响应,这也会使得广泛使用的浏览器实现变得更加复杂。通过HTTPS进行协议协商则减少了出错的可能性,因为"不支持"就意味着回退到安全可靠的旧式HTTP/1.1。


强制使用HTTPS的原因不仅仅是安全性,还因为它将互联网集中在他们手中,通过证书颁发机构,浏览器供应商将能够决定谁可以发布内容。提供不受欢迎内容的网站将被吊销其证书,并且在明文文本被淘汰后无法切换回来。 - undefined
@Bachsau 怎么说呢?用户总是可以选择覆盖未知CA警告,也可以使用Let's Encrypt的开放CA。 - undefined
@PeterB 这不是一个有效的论点。首先,让用户覆盖警告是不切实际的,其次,浏览器供应商很可能会在适当的时候取消这个选项。Let's Encrypt做得很好,但他们也是问题的一部分,因为他们是单点故障。无论如何,CA(证书颁发机构)的自由度很小。他们必须遵循CA/B论坛制定的规则,而这基本上是由Google主导的,而Chrome已经赢得了第二次浏览器战争。无论他们将什么政策编码进去,都成为了事实上的标准。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接