当浏览器不支持SNI时会发生什么情况

一个看似简单的问题,但仍然有效。

当不支持SNI的浏览器尝试访问configuration为通过SNI强制SSL的站点时,会发生什么情况?

谢谢

这取决于您的Web服务器在接收到没有SNI的HTTPS请求时的反应。 (如果你想testing,你可以用openssl来模拟非SNI浏览器,需要基本的HTTP协议知识。

使用IIS 10时,会发生以下情况:

  • 如果configuration了“默认SSL站点”(绑定到端口443而没有主机名的站点),则非SNI客户端将看到:

    • 默认 (错误)SSL站点的证书(通常会导致证书警告,除非您将默认的SSL站点证书configuration为包含在您的IP地址上托pipe的所有站点的SAN)并且
    • 请求 (正确)站点的内容(在用户解除证书警告之后)。

    这非常有意义:

    1. SSL握手发生在HTTP请求可以传输之前。 因此,如果没有来自浏览器的SNI支持,服务器没有select,只能返回默认的SSL站点证书。
    2. SSL连接build立后(使用“错误的”证书),服务器收到HTTP请求,通过Host:头读取请求的主机名,并返回正确的内容。
  • 如果没有configuration“默认SSL站点”,连接将被closures。

(来源:刚刚使用旧的Windows XP IE8虚拟机进行testing。)

它可能会连接到默认的SSL虚拟主机。 换句话说,如果您使用IP进行连接,则会看到相同的网站: https://1.2.3.4/https://1.2.3.4/

它将无法加载网站,这是肯定的。 这就是为什么大型网站不会很快转移到SNI托pipe的HTTPS网站的原因。 XP中的IE6和IE7似乎是不支持SNI的最大的旧浏览器。

如果你能得到一个非SNI支持的浏览器,你可以看看https://alice.sni.velox.ch/发生了什么。

这似乎也与您使用的服务器软件有关。 使用Apache时,没有SNI支持的浏览器只会获得第一个configuration的网站(可能与主机名不匹配警告)。

我只是使用运行在Windows NT 4 Workstation上的IE 4.0进行testing。 我的网站托pipe在http://www.nosupportlinuxhosting.com/上 ,加载完美。 我不确定他们的主机是否符合上述标准,但是他们的“限制”页面暗示了这种情况。 我有点惊讶的网页加载。