误差
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.我最近从Comodo购买了一个EV SSL证书,并将它安装在我的VPS (cPanel/WHM)上,一切都很好。然后我升级到http2,现在在证书上的每个网站之间切换时都会收到错误。这三个网站共享相同的IP地址。据我所知,这可能就是问题所在。我不想为每个域重新颁发SSL证书,因为我为EV多域证书支付了费用。是否可以购买两个额外的IP,并确保每个域名都有自己的IP?或者有什么方法可以编辑虚拟主机,这样我就可以维护我现在的设置了吗?
我要说的是,这只发生在Safari,而不是chrome上。
SSL实验室报告
EasyApache HTTP配置
EasyApache HTTPS vhost配置
发布于 2019-06-02 21:43:46
您只在这三个站点中的两个上启用了HTTP/2。
如果IP地址和证书都包含所有必需的域,则HTTP/2将尝试将连接重用到多个域。这里就是这种情况,因此可以重用HTTP/2。
但是,如果您在所有三个域上运行SSLLabs,您会发现用于Chrome的协议略有不同(例如):
Chrome 70 / Win 10 RSA 2048 (SHA256) TLS 1.2 > h2
Chrome 70 / Win 10 RSA 2048 (SHA256) TLS 1.2 > http/1.1
Chrome 70 / Win 10 RSA 2048 (SHA256) TLS 1.2 > h2 类似地,在ALPN设置中也是这样:
ALPN Yes h2 http/1.1
ALPN Yes http/1.1
ALPN Yes h2 http/1.1因此,首先进入中间域将工作,因为它将通过HTTP/1.1进行连接,因此不会重用连接。但是,在向第一个或最后一个域发起请求之后,进入中间域将尝试重用HTTP/2连接,并失败,因为中间域不支持HTTP/2。
当浏览器试图重用连接时,Web服务器应该为任何请求返回一个 status code,这样说:“是的,您真的不应该试图在这里重用连接!您可以在另一个连接上再试一次吗?”如果存在不同的SSL/TLS设置(例如,用于连接的密码套件在另一个域中不被接受),则会发生相同的情况。
Chrome和Firefox正确地处理421响应,并通过新连接透明地重新发送请求,在本例中,新连接使用HTTP/1.1 (查看浏览器中的开发人员工具,您将看到这是正确的)。其他浏览器,包括iOS使用的Safari,尚未实现对相对新的421状态代码的支持,因此失败,错误如下:
误导请求 客户端需要此请求的新连接,因为请求的主机名与用于此连接的服务器名称指示(SNI)不匹配。
我认为没有理由不对所有域启用HTTP/2,这是一个错误配置错误吗?如果是这样的话,那么在所有域中启用HTTP/2,您的问题就应该得到排序。
如果您不想在所有域上使用HTTP/2,那么您可以确保浏览器不认为它可以重用连接。这意味着要么为该域使用单独的IP地址,要么只为两个域重新颁发证书,为不应该共享连接的其他域使用单独的证书。
https://stackoverflow.com/questions/56416281
复制相似问题