【发布时间】:2023-04-01 20:18:01
【问题描述】:
我正在阅读spec 并试图准确了解何时可能返回 421。举了一个例子,但我不完全明白。
背景
规范建立了两个允许连接重用的条件:
对于没有 TLS 的 TCP 连接,这取决于解析到相同 IP 地址的主机。
和
对于 https 资源,连接重用另外取决于拥有一个 对 URI 中的主机有效的证书。
如果连接中使用的证书有多个subjectAltName 或任何subjectAltName 是通配符,则可以将连接重新用于具有在subjectAltNames 列表中的主机名的任何请求或匹配任何通配符。
规范中的具体示例
在某些部署中,为多个源重用连接可以 导致请求被定向到错误的源服务器。为了 例如,TLS 终止可能由一个中间盒执行,该中间盒使用 TLS 服务器名称指示 (SNI) [TLS-EXT] 扩展以选择一个 源服务器。这意味着客户端可以发送 向服务器发送的机密信息可能不是预期的 请求的目标,即使服务器不是 权威。
请解释我对这个例子的理解是错误的:
与具有域x.com 的请求的中间盒建立https 连接。中间盒的 IP 地址为 1.2.3.4,x.com 解析为该地址。使用 SNI,TLS 握手具有x.com,并且中间盒返回对该域有效的证书。此连接上的所有消息都从客户端发送到中间盒或从中间盒发送到客户端。从客户端到中间盒的应用程序级消息由中间盒转发到不同连接上的源。从源到中间盒的消息被转发到客户端。如果要重用连接,满足上面讨论的两个条件是不够的。具体来说,对于域 y.com 的请求:如果 y.com 解析为 1.2.3.4 并且中间盒具有对 y.com 有效的证书,则仍然可能存在问题。因为原始连接使用x.com 进行了它的TLS 握手,并且因为握手只在新连接开始时完成,所以无法建立一个可以获得y.com 证书的https 连接。因此客户端错误地将同一连接上的请求发送到y.com。中间盒拒绝该请求,因为与连接关联的证书对x.com 有效,而不是y.com。 (x.com证书只对x.com有效,y.com证书只对y.com有效。
【问题讨论】:
标签: http-status-codes http2 http-status-code-421