IIS下具有SSL的多个子域[关闭]

Posted

技术标签:

【中文标题】IIS下具有SSL的多个子域[关闭]【英文标题】:Multiple subdomains with SSL under IIS [closed] 【发布时间】:2010-10-29 08:33:50 【问题描述】:

我目前需要在 SSL 下的同一个域下有 2 个子域。 两个子域(www 和affiliate)都在同一个IIS 服务器上,在同一个IP 下,并且每个子域都指定了一个主机头值(www.mydomain.com 和affiliate.mydomain.com)

第一个子域 (www) 是默认的,无论有无 SSL,都可以正常工作。 第二个子域在 HTTP 下完美运行。

问题是我刚刚购买并安装了附属子域的 SSL 证书,当你转到 https://affiliate.mydomain.com 时,你会被重定向到 http://www.mydomain.com

我猜问题在于我无法为 SSL 指定主机头值? (我通常设置主机头值的对话框底部没有该选项,专用于 SSL)。

对此我能做些什么? 我应该将每个子域放在单独的 IP 中吗? 这根本不可行吗?

谢谢! 丹尼尔

【问题讨论】:

【参考方案1】:

“我猜问题出在 我无法指定主机的事实 SSL 的标头值"

你猜对了。您将需要两个 IP 地址。

【讨论】:

看起来在较新版本的 IIS 中您可以使用一个 IP 地址:serverfault.com/a/566433/381304【参考方案2】:

我不确定您正在运行什么 Web 服务器,但在 Windows Server 2003 上的 IIS 6 中,您可以为 SSL 站点使用主机标头,从而允许它们位于相同的 IP 地址上。

http:// www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/596b9108-b1a7-494d-885d-f8941b07554c.mspx?mfr=true

编辑:这仅在证书是通配符证书时才有效。否则,子域“affiliate”将尝试使用与子域“www”相同的证书,访问者将收到警告。

【讨论】:

他没有通配符证书。 这是一个很好的观点;通配符可以工作,因为两个主机都在同一个域中。 这有点用,但不适用于我的情况。显然我需要一个通配符证书。当我这样做时,我的附属子域现在不再重定向到 www,但我收到 SSL 证书适用于 www 的警告...更糟糕的是,我无法撤消我所做的事情 :-) 我会看看单独的 IP 是否有效。【参考方案3】:

这个问题是 HTTPS 工作方式的基础。

虚拟主机依赖于 HTTP/1.1 中引入的“Host”标头。这是 HTTP 协议的一部分,但从 SSL 协议的角度来看,HTTP 层是“应用程序数据”,直到 SSL 握手完成后才能传输。

但是,服务器证书是在握手期间提供的。 HTTP 服务器还没有看到“Host”标头,所以它不知道要发送哪个证书。使用不同的 IP 地址是可行的,因为它在 SSL 下的 IP 层可见。


更新:有一个新的 TLS 扩展,允许客户端在握手期间指示他们打算使用的服务器。 See dlongley's answer 了解更多信息。

【讨论】:

感谢您的解释!【参考方案4】:

在特定情况下,您需要同一域的 2 个子域,通配符证书必须工作...我使用通配符证书已有 3 年时间用于数十个网站,但没有客户报错了

如果您告诉证书是“www”,那么您的证书不是真正的通配符证书,或者您遇到某种浏览器缓存问题,或者您使用了 2 个证书副本并且您只更新了一个其中,或者您忘记重新启动服务器,或者..我不知道:)

【讨论】:

【参考方案5】:

这可能对您没有帮助,但希望它能提供信息。

某些 TLS 客户端使用的 TLS 协议扩展名为服务器名称指示 (SNI)。此扩展允许 TLS 客户端指定他们尝试联系的服务器的主机名。因此,当客户端在 TLS 协议中连接并发送 ClientHello 消息时,服务器可以决定使用哪个证书进行响应。这使得虚拟 SSL/TLS 服务器在单个 IP 上成为可能。

OpenSSL 提供回调函数,允许您读取客户端发送的主机名并处理获取适当的证书,但不幸的是,我不知道这是否可以使用 IIS。

【讨论】:

以上是关于IIS下具有SSL的多个子域[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

具有多个域的通配符 SSL

如何在 Apache 中使用 SSL 配置多个子域?

企业网站选择哪个品牌的通配符SSL证书比较好

SSL证书可以给多个域名使用吗

具有多个域和子域的 PHP 身份验证

SSL证书能给几个网站用?