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

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

这个问题看似简单,但确实有效。

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

谢谢

答案1

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

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

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

    • 证书默认(错误)SSL 站点(通常会导致证书警告,除非您将默认 SSL 站点证书配置为包含 SAN全部托管在您的 IP 地址上的站点)以及
    • 内容请求(正确的)站点(在用户忽略证书警告之后)。

    这是很有道理的:

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

(来源:刚刚用旧的 Windows XP IE8 虚拟机进行了测试。)

答案2

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

答案3

肯定无法加载网站。这就是为什么近期没有大型网站会迁移到 SNI 托管的 HTTPS 网站的原因。XP 中的 IE6 和 IE7 似乎是不支持 SNI 的最大旧浏览器。

如果你能找到不支持 SNI 的浏览器,你可以访问以下地址查看会发生什么:https://alice.sni.velox.ch/

您使用的服务器软件似乎也很重要。使用 Apache,不支持 SNI 的浏览器只会获取第一个配置的网站(并且可能出现主机名不匹配警告)。

答案4

我刚刚使用在 Windows NT 4 Workstation 上运行的 IE 4.0 对其进行了测试。我的网站托管于http://www.nosupportlinuxhosting.com/,加载完美。我不确定他们的托管是否符合上述标准,但他们的“限制”页面表明情况确实如此。我对页面加载有点惊讶。

相关内容