XP 无法显示该页面

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

什么是 SNI

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

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

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

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

SNI 客户端兼容性

  • Chrome 5 及以上版本
  • Chrome 6 及以上版本
  • Firefox 2 及以上版本
  • Internet Explorer 7 及以上版本(仅支持 Windows Vista、Windows Server 2008 及以上版本操作系统。在 Windows XP 系统中,任何版本的 IE 浏览器都不支持 SNI。
  • Konqueror 4.7 及以上版本
  • Opera 8 及以上版本
  • Safari 3.0 及以上版本(仅支持 Windows Vista、Windows Server 2008 及以上版本操作系统,或 Mac OS X 10.5.6 及以上版本操作系统。)
  • Android 3.0 Honeycomb 及以上版本
  • iOS 4 及以上版本
  • Windows Phone 7 及以上版本

SNI 服务器兼容性

  • Apache 2.2.12 及以上版本
  • Apache Traffic Server 3.2.0 及以上版本
  • Cherokee
  • HAProxy 1.5 及以上版本
  • IIS 8.0 及以上版本
  • Lighttpd 1.4.24 及以上版本
  • LiteSpeed 4.1 及以上版本
  • Nginx 0.5.32 及以上版本

XP 解决办法

整站的域名使用了一个证书,配置使用了更低级别的协议。

SSLProtocol all -SSLv3
SSLCipherSuite  ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA

SNI 更多相关

——打个小赏 感谢支持——

1 自动识别支付宝/微信/QQ支付