12月 142017
 

我们所熟悉的互联网过去主要使用 IPv4 协议路由包,TCP 协议连接,SSL/TLS 加密连接,DNS 查询主机和 HTTP 应用协议。IETF 的 HTTP 和 QUIC 工作组联席主席 Mark Nottingham 称,常用的互联网协议过去几年正在发生改变:
HTTP/2 的多路复用允许一个 TCP 连接发送许多个请求,它使用 TLS/1.2 加密,屏蔽了被认为不安全的加密算法。TLS 1.3 已经到达标准化的最后阶段,不要被它的递增名字迷惑,它实际上是全新版本的 TLS,修改了握手,利用动态改变的密钥交换,排除了静态密钥交换,这一设计引发了网络运营商和供应商的担忧,因为他们无法拦截和查看加密流量了,TLS 1.3 不支持拦截流量的技术。TCP 是按次序的传递协议,一个包丢失会影响后续包的传递,QUIC 协议尝试解决这个问题,它由 Google 开发,现已交给 IETF,预计将于 2018 年标准化,Google 已经在其 Chrome 浏览器和网站上部署了 QUIC。QUIC 最初作为一个 HTTP-over-UDP 用例,此外还要求加密,没有不加密的 QUIC,它使用 TLS 1.3 建立会话密钥,因为是基于 UDP,TCP 连接中暴露的会话信息和元数据在 QUIC 中都加密了。另一个新协议是 DOH, DNS over HTTP

7月 212016
 

最近好几个朋友在给网站开启 HTTP/2 后,都遇到了无法访问的问题。其中有的网站只是 Firefox 无法访问,通过控制台网络面板可以看到请求被 Abort;有的网站不但 Firefox 无法访问,连 Chrome 也会跳到错误页,错误代码是「ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY」。诡异的是,只要去掉对 HTTP/2 的支持(例如去掉 Nginx listen 配置中的 http2)就一切正常。也就是说无法访问的现象只存在于 HTTPS + HTTP/2 的组合,单独提供 HTTPS 服务时就是好的。

这个问题比较有趣,本文除了告诉大家如何解决它之外,还会帮助大家弄清问题的来龙去脉。如果你只关心结论,直接看最后的小结即可。 Continue reading »