我有两个网站绑定到两个不同域(xyz.example.com 和 abc.example.com)上的一个 IP 地址(10.10.0.1)。HTTPS 使用 xyz.example.com 域的证书绑定到端口 443,而 abc.example.com 仅使用 HTTP。这是在 IIS 7.5 服务器上。
我在 http 上访问这两个网站没有问题,https 对 xyz.example.com 也很好用,但如果我尝试访问https://abc.example.com,它显示了 xyz.example.com 的 SSL 站点,而这并不是我想要的。
有没有办法阻止https://abc.example.com? 尽管有针对单个 IP、多个 SSL 站点的解决方案,但我找不到任何类似的问题。
答案1
这是 IIS 7/7.5 和 SSL/TLS(Pre SNI)的一个限制,因为它不允许您将 HTTPS 绑定到单个站点,而只允许绑定到 IP 地址/端口组合,因此到该 IP 地址/端口的所有流量都将转到它绑定到的站点。
可用于 IIS 7/7.5 的解决方法
- 使用重写规则将不安全站点的 HTTPS 流量重定向到 HTTP
- 为安全站点添加另一个 IP 地址,并将安全站点绑定到该 IP
IIS 8+ 支持 SNI,这是 TLS 的扩展,允许在握手过程中传递主机信息,以便服务器显示正确的站点。这要求客户端具备 SNI 功能,但所有现代浏览器都具备此功能。(Windows XP 上的任何 IE 版本都不支持此功能,但目前还不是现代浏览器。)
StackOverflow 上也有类似的问题得到解答这里。