了解 XP 用户在 IIS8 上访问 UCC 证书

了解 XP 用户在 IIS8 上访问 UCC 证书

我有一个 IIS 网站,该网站托管 3 个不同的网站,所有网站均使用相同的 UCC SSL 证书。(我的网站代码会检查主机标头本身,以决定显示网站的哪个变体)。

我已经为 XP 上的 Internet Explorer 用户修复了最致命的错误,即禁用 IIS 中的“需要主题名称指示”字段。由于 SNI不支持 Windows XP如果在 XP 用户切换到 HTTPS 时启用该功能,他们基本上会在没有任何警告的情况下被踢出网站(不要告诉我的老板)。

因此,我完全理解,当用户通过 HTTPS 访问共享同一 IP 的 3 个站点中的任何一个时,他都会被发送到同一个 IIS 站点并提供 UCC 证书。即使 XP 也支持 UCC/SAN 证书,因此客户端会接受证书并按预期显示站点。

现在......忘记所有这些,并考虑第二个非假设的情景。

  • 假设我有两个网站:cats.comdogs.com
  • 它们是不同的站点,部署在 IIS 8 中的两个不同的网站中。
  • 它们都位于同一个 UCC SSL 证书上*
  • SNI 已禁用
  • 它们都绑定到同一个 IP 地址

现在考虑 XP 用户访问https://cats.com

以下是我理解的事物运作方式:

  • DNS 将我的 IP 返回给浏览器 - 假设1.2.3.4
  • 已协商 HTTPs 连接,但由于 XP 对 SNI 一无所知,因此它不会发送 SSL 主机标头(或任何名称),而只是通过 IP 访问安全站点。
  • 因此 IIS 将查找与 https 网站绑定关联的 IP,并且实际上会找到两个。
  • 假设 IIS 决定只为您提供第一个 - 因此它会为您提供cats.com您所期望的内容。所以这没问题。
  • 但是假设您访问https://dogs.com- 您实际上不应该为该网站提供服务吗,cats.com因为 XP 上的 SSL 不知道 SSL 连接的 SNI,并且它在 IIS 中被禁用了?

其实你不需要。你可以访问 dogs.com。我试过这个,cats.com两者dogs.com都可以在 Windows XP Internet Explorer 8 客户端上运行。

我只是不明白为什么会这样。我本以为这种行为只会在我的第一个场景中出现,那时他们都共享一个 IIS 应用程序。

我最好的猜测是 IIS 8 无论如何都会接收主机标头,并且足够智能地将其路由到正确的网站并找到 UCC 证书名称。这是怎么回事?

有人可以进一步解释一下吗?

* 只是为了故意惹恼那些热衷于技术的猫狗主人 ;-)

答案1

IIS 使用 HTTP Host: 标头来确定要服务哪个网站,就像任何其他请求一样。

相关内容