这可能听起来有点愚蠢,但我更像是一名开发人员,而不是服务器管理员,而且在 IIS 方面我简直是笨蛋。所以请耐心听我说完。
我目前有一个客户,他有一个运行 IIS6 的专用 2K3 机箱。他们在这个机箱上托管一个网站,有两个域名解析到该网站(domain1.com、domain2.com)。该网站存储在典型的 C:\Inetpub\www 文件夹中。此外,该网站的一部分受 SSL 保护。有两个 SSL 证书,每个域名一个。
当用户访问 https://domain1.com 时,一切都正常。但是,当用户访问 https://domain2.com 时,Internet Explorer 会发出安全警告。显然,这不是我们想要的。(我不得不在 URL 中加空格,因为我是新手,所以 ServerFault 不允许我一次发布多个 URL)。
以下是我所能提供的有关 IIS 管理器中的站点设置的一些信息。
这里列出了两个站点:“domain1.com”和“Administration”。当我进入 domain1.com 的属性时,IP 地址的值为“(全部未分配)”。
在“高级”下,“domain2.com”的 IP 地址为“默认”。此外,“此网站的多个 SSL 标识”中有一个条目,其 IP 地址为“默认”,标准 SSL 端口为 443。
我可以在“目录安全性 > 查看证书”下查看 domain1.com 的证书。看起来一切都正常。
所以,总结一下:我正在尝试为不同的域名设置单独的 SSL 证书,这两个域名都指向同一个地方。这可能吗?如果有人能向我解释这个过程(并尽可能简化)或者至少给我指明正确的方向,我将不胜感激。
如果这没有任何意义,或者我没有向您提供足够(或正确)的信息,请告诉我。
答案1
您不能将虚拟主机与 SSL 一起使用,因此要托管两个都使用 SSL 的站点,您必须拥有 2 个 IP 地址,每个 IP 地址都有一个特定的主机并且 SSL 证书绑定到该主机。
简而言之,您的服务器上需要 2 个 IP 地址,一个绑定到 domain1.com,另一个绑定到 domain2.com,以及 2 个 IIS 站点,一个绑定到 domain1.com,一个绑定到 domain2.com。它们都可以提供相同的内容,但必须是独立的站点。
Apache 支持 SNI(看这里) 允许您使用 SSL 执行 vhosts,但 IIS 目前不支持此功能。
答案2
最好的解决方案是使用统一通信证书允许您在一个证书中包含多个域名。只需将两个域名都包含在证书中即可。无需担心额外的 IP 地址或不同的端口等。
答案3
您可以使用 SNI SSL 证书。它允许您拥有具有相同 IP 地址的任何网站,因为不会进行 IP 检查,但会检查 Host HTTP/1.1 标头以验证 SSL 证书。
PS:旧版浏览器无法检查 SNI SSL 证书,也无法进行拦截的透明代理。
答案4
我无法发表评论,但 IIS 肯定支持 SNI(只是不支持 IIS 6,它已经有十多年的历史了)。请参阅以下帖子,了解有关 SNI 的非常有益的讨论: 同一 IP 地址和同一端口上有多个 SSL 域吗? 请注意,由于 Heartbleed 漏洞,SSL 3.0 现在被认为是不安全的,因此 TLS 1.0 应该是支持的最低加密,唯一的缺点是它需要 HTTP 1.1,而这并不是什么要求。