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

PUn*_*cle 6 windows-xp internet-explorer sni

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

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

谢谢

Hei*_*nzi 1

这取决于您的 Web 服务器在接收到不带 SNI 的 HTTPS 请求时的反应。(如果想测试的话,可以用 openssl 模拟一个非SNI的浏览器。需要有基本的HTTP协议知识。)

对于 IIS 10,会发生以下情况:

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

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

    这是完全有道理的:

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

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