HTTP 2 下使用相同證書子域名 SSL配置不一致導致 421 錯誤

HTTP 2 下使用相同證書子域名 SSL配置不一致導致 421 錯誤

Zhenyu Mao

Zhenyu Mao

BS-CS | 航空&軌道&公路交通愛好者 | 程序猿

這個情況真的很罕見,網上資料很少,這邊記錄一下,方便以後遇到的人解決。

背景:
有如下子域名:http://abc.test.govhttp://def.test.gov,兩個域名都啓用了HTTP2,使用同一個通配符證書*.http://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.

解決辦法:關閉apache裏的http2

原因查證如下:

  1. 由於啓用HTTP2,瀏覽器默認在同證書、同IP的情況下會採取連接複用。
  2. 兩邊域名的SSL配置不同,其中http://def.test.gov(配置了雙向認證 SSLVerify require)。這導致服務器拒絕瀏覽器的多路複用請求,報421。這種情況也會發生在根證書不一致等情況
  3. 這種情況在HTTP1.1下不會發生
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章