我有一个单一的IIS网站,主办3个不同的网站,都使用相同的UCC SSL证书。 (我的网站的代码检查主机头本身,以决定哪个网站的变化显示)。
我已经修复了我的XP上的Internet Explorer用户的最致命的错误,那就是禁用IIS中的“要求主题名称指示”字段。 由于当XP用户切换到HTTPS时,如果启用了SNI,他们基本上会在没有任何警告的情况下被踢出网站(不要告诉我的老板)。
所以我完全明白,当一个用户通过HTTPS访问这三个站点中的任何一个共享同一个IP时,他被发送到同一个IIS站点并且服务于UCC证书。 即使XP支持UCC / SAN证书,以便客户端接受证书并按预期显示站点。
现在…忘记所有这些,并考虑第二个非假设的情况。
cats.com和dogs.com 现在考虑XP用户访问https://cats.com
以下是我理解事情的工作方式:
1.2.3.4 cats.com 。 所以没关系 https://dogs.com – 你不应该实际上服务的网站cats.com因为XP上的SSL不知道SNI的SSL连接,反正它在IIS中被禁用? 那么你不。 你得到dogs.com。 我已经试过了, cats.com和dogs.com都是从Windows XP Internet Explorer 8客户端运行的。
我只是不明白为什么这个工作。 我会期待这种行为只在我的第一种情况下,当他们都共享一个IIS应用程序。
我最好的猜测是IIS 8正在接收主机头,而且足够聪明,可以将其路由到正确的网站,并find一个UCC证书名称。 那是怎么回事?
有人能进一步解释吗?
*只是故意烦扰技术头脑的猫和狗主人;-)
IIS使用HTTP Host:头来确定要提供哪个网站,就像其他任何请求一样。