Iis 7 IIS 7将SSL添加到一个站点,所有其他站点响应https请求

Iis 7 IIS 7将SSL添加到一个站点,所有其他站点响应https请求,iis-7,Iis 7,我有多个网站在我的IIS上运行,现在有一个网站(SiteB)需要支持ssl请求。我已经为网站启用了it编辑绑定,但问题是当我选择的协议SSL编辑绑定主机名字段被禁用时,无法设置主机名以响应https请求,这会导致使用https://请求的IIS的所有站点加载siteB的网站 例如,我的出价是下一个 Site A IP Port HostName * 80 www.sitea.com Site B IP Port Hostname * 443 www.siteb.com

我有多个网站在我的IIS上运行,现在有一个网站(SiteB)需要支持ssl请求。我已经为网站启用了it编辑绑定,但问题是当我选择的协议SSL编辑绑定主机名字段被禁用时,无法设置主机名以响应https请求,这会导致使用https://请求的IIS的所有站点加载siteB的网站

例如,我的出价是下一个

Site A

 IP  Port HostName
 *     80 www.sitea.com

Site B
 IP Port Hostname
 *   443 www.siteb.com
 *    80 www.siteb.com
如果我在浏览器中键入,它将正常工作,但如果我在浏览器中键入,则siteb网页将加载sitea的主机名

如何使其仅响应IIS上的https请求

我也尝试过使用命令appcmd,但它不起作用

appcmd set site /site.name:{sitB} /bindings.[protocol='https',bindingInformation='*:443:*'].bindingInformation:*:443:siteB.com 

谢谢你的帮助。

根本问题
这种意外的行为不是因为IIS,而是因为web加密协议

两种主要的web加密协议是SSL和TLS。在将任何请求信息传递给服务器之前,这两个协议都会协商安全连接。这意味着,在安全请求中,服务器直到建立安全连接后才真正了解主机名

已创建TLS和SSL的扩展以解决此限制。它被称为(服务器名称标识)。问题是服务器和客户端计算机都需要支持此扩展。目前,客户端浏览器支持有些参差不齐。有关浏览器列表,请参阅本文

IIS对问题的处理
正是由于上述主机名限制,IIS不允许您将主机名绑定到HTTPS绑定。IIS无法将HTTPS请求路由到特定主机名,因为它在第一次开始协商连接时不知道请求的主机名

一旦IIS与客户端协商了安全连接,并了解到其请求的主机名针对的不是具有HTTPS绑定的站点(例如,请求),IIS可以返回失败代码或尝试正常失败。IIS选择后者,并尝试通过使用HTTPS绑定为站点提供服务而优雅地失败,即使用户正在请求其他站点

解决方案/变通办法

  • 创建重写规则以将非安全网站的所有HTTPS请求重定向到HTTP
  • 升级到IIS 8以使用SNI扩展。然后要求访问者升级到支持SNI的浏览器
  • 让您的安全站点在收到其他域的请求时返回错误消息
  • 按IP地址而不是主机名绑定,因为IIS可以按IP地址路由HTTPS请求
参考资料

我的大部分信息来自

我们运行的Web服务器具有多个需要SSL的站点,没有问题


如果我正确理解了您的问题-您需要设置绑定而不是主机名-这是行不通的。因此,对于我们托管的每个启用SSL的站点,我们需要一个不同的外部IP地址。然后,在IIS中设置站点时,输入该IP地址作为绑定。

我也有同样的问题。我会开始悬赏。你有证书吗?什么是CN?所有其他网站都是以“虚拟目录”或“应用程序”或“网站”的形式托管的吗?似乎您已将设置应用于网站,并且网站中承载了多个虚拟目录/应用程序。在试用IIS 8时,您似乎可以在不使用SNI的情况下处理此情况。SNI只需要选择与请求域对应的证书。IIS 8似乎能够在以后选择网站。通过在https绑定上指定域sitea进行测试,服务器上没有其他https绑定,通过xp IE8访问(在这种情况下没有SNI):sitea上的https=>成功,服务器服务的其他域上的https=>证书不匹配,然后IIS 404没有匹配的绑定。但IIS7不可行,它不允许将https绑定限制到域。