Iis 7 IIS 7将SSL添加到一个站点,所有其他站点响应https请求
我有多个网站在我的IIS上运行,现在有一个网站(SiteB)需要支持ssl请求。我已经为网站启用了it编辑绑定,但问题是当我选择的协议SSL编辑绑定主机名字段被禁用时,无法设置主机名以响应https请求,这会导致使用https://请求的IIS的所有站点加载siteB的网站 例如,我的出价是下一个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
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绑定限制到域。