月度归档:2019年10月

XP 无法显示该页面

作为古董级的系统,XP 确实有很多兼容问题。例如很多 HTTPS 页面报错:无法显示该页面。这都还不是能显示但有问题,是直接无法显示。追查了很多资料,最终确认了原因:SNI

什么是 SNI

随着 IPv4 地址的短缺,为了让多个域名复用一个 IP,在 HTTP 服务器上引入了虚拟主机的概念。服务器可以根据客户端请求中不同的 host,将请求分发给不同的域名(虚拟主机)来处理。

但是,在一个被多个域名(虚拟主机)共享 IP 的 HTTPS 服务器中,由于在握手建立之前服务器无法知道客户端请求的是哪个 host,所以无法将请求交给特定的虚拟主机。然而,要完成握手,又必须读取虚拟主机中配置的证书信息。

Server name indication(简称 SNI)就是用来解决这个矛盾问题的。SNI 要求客户端在与服务器握手时就携带需要访问的域名的 host 信息。这样,服务器就知道需要用哪个虚拟主机的证书与客户端握手并建立 TSL 连接。

SNI 最早在 2004 年被提出,目前主流的浏览器、服务器和测试工具都已支持 SNI。

继续阅读