为啥 HTTP/2 的浏览器实现需要 TLS?

Posted

技术标签:

【中文标题】为啥 HTTP/2 的浏览器实现需要 TLS?【英文标题】:Why do browser implementations of HTTP/2 require TLS?为什么 HTTP/2 的浏览器实现需要 TLS? 【发布时间】:2016-03-08 16:06:26 【问题描述】:

为什么大多数现代浏览器都要求 HTTP2 使用 TLS?

这背后有技术原因吗?还是只是为了让网络更安全?

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

【问题讨论】:

"Although the standard itself does not require usage of encryption, most client implementations (Firefox, Chrome, Safari, Opera, IE, Edge) have stated that they will only support HTTP/2 over TLS" youtube.com/watch?v=r5oT_2ndjms 【参考方案1】:

部分原因是为了让更多的东西使用 HTTPS,并鼓励用户和服务器使用 HTTPS。 Firefox 和 Chrome 开发人员都表示这通常是好的。为了用户和用户的安全和隐私。

这也是关于部署在 Internet 上的损坏的“中间框”假设端口 80(可能看起来像 HTTP/1.1)上的 TCP 流量意味着 HTTP/1.1,然后它们会为了“改进”或过滤某种方式的交通。在这样的网络上执行 HTTP/2 明文最终的成功率要低得多。坚持加密让那些中间的盒子永远没有机会搞砸流量。

此外,有一定比例的已部署 HTTP/1.1 服务器会对升级返回错误响应:使用未知协议(例如“h2c”,即 HTTP/2 明文),这也会使问题复杂化在广泛使用的浏览器中实现。通过 HTTPS 进行协商更不容易出错,因为“不支持它”只是意味着切换到安全的旧 HTTP/1.1 方法。

【讨论】:

以上是关于为啥 HTTP/2 的浏览器实现需要 TLS?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制浏览器使用不带 TLS 的 HTTP/2 协议?

Java HTTP/2 服务器套接字

MAC下使用Wireshark调试chrome浏览器的HTTP/2流量

地推TLS1.3

地推TLS1.3

使用 nghttp2 调试 HTTP/2 流量