HTTP 2 下使用相同证书子域名 SSL配置不一致导致 421错误
1. 421 Misdirected Request(错误的请求)
请求被指向到无法生成响应的服务器(比如由于连接重复使用)
这个情况真的很罕见,网上资料很少,这边记录一下。
2. 背景
有如下子域名
http://abc.test.gov
、http://def.test.gov
,两个域名都启用了HTTP2- 使用同一个通配符证书
*.test.gov
,绑定在同一个服务器上
http://abc.test.gov
有一个链接指向 http://def.test.gov
,用户点击该连接报错:(iOS Safari、Android Webview会,Chrome Mac版正常)
HTTP/2 421 Misdirected Request
The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection.
原因查证如下:
由于启用HTTP2,浏览器默认在同证书、同IP的情况下会采取连接复用。
两边域名的SSL配置不同,其中http://def.test.gov(配置了双向认证 SSLVerify require)。这导致服务器拒绝浏览器的多路复用请求,报421。这种情况也会发生在根证书不一致等情况
这种情况在HTTP1.1下不会发生。