同一个IP的443端口中的多个域

Posted

技术标签:

【中文标题】同一个IP的443端口中的多个域【英文标题】:Multiple domains in 443 port in same IP 【发布时间】:2012-08-26 05:17:10 【问题描述】:

我在 IIS 7 的端口 443(https) 中托管了一个网站“www.example1.com”。现在我为相同 IP 的“www.example2.com”购买了一个新域。我想在端口 443 中托管此域中的另一个网站 (www.example2.com)(我已经将端口 443 用于“www.example1.com”)。

我该怎么做?这是否可以在同一 IP 的端口 443 中托管两个域?如果是,任何人都可以让我知道正确的方法吗?我正在使用 IIS 7。

【问题讨论】:

【参考方案1】:

如果您使用通配符证书,只需在友好名称中使用格式 *.domainname.com,IIS GUI 将在您编辑绑定时为您启用主机名控件。

Source

【讨论】:

【参考方案2】:

在 iis 7.5 或更新版本中 - 网站 > 添加网站 - 网站名称:example2.com - 物理路径:选择目录 - 绑定:与 example.com 相同的 ip - 主机名:example2.com 然后在绑定中检查这两个网站

【讨论】:

这不是有效的答案。原始海报专门询问IIS7。 IIS7 上不存在带有服务器名称指示的解决方案。 不幸的是,世界状况是这样的,当搜索“同一 IP 中的 443 端口中的多个域”时会出现这个线程,所以我仍然非常感谢这个答案【参考方案3】:

我目前使用 IIS 6.0。 我已经设法使用端口 443 和不同的证书设置了多个网站。

从 IIS 管理器转到网站并编辑网站绑定。 只需确保勾选 Require Server Name Indication 框并将 IP 地址保留为 All Unassigned。 现在,您可以通过从证书下拉列表中为站点选择适当的证书来为多个站点使用相同的端口 (443)。

【讨论】:

这不是真的。您写道:“......并留下 IP 地址:全部未分配”。您没有告诉的是您为每个网站使用不同的 IP 地址 - 这就是您希望保留 IP 地址字段未分配的原因。你的方法没有什么特别之处——一直都是这样。原发帖人询问是否使用相同的 IP 地址。【参考方案4】:

可以的。

IIS 7 中的 SSL 主机标头允许您为同一 IP 地址上的多个 IIS 网站使用一个 SSL 证书。通过 IIS 管理器界面,IIS 只允许您使用 SSL 证书将每个 IP 地址上的一个站点绑定到端口 443。如果您尝试将 IP 地址上的第二个站点绑定到同一个证书,则 IIS 7 在启动该站点时会给您一个错误,指出存在端口冲突。为了在同一 IP 地址上分配一个供多个 IIS 站点使用的证书,您需要按照以下说明设置 SSL 主机标头。

您需要什么类型的 SSL 证书? 因为您只能使用一个证书,所以该证书需要与您使用它的网站的所有主机名一起使用(否则您将收到名称不匹配错误)。例如,如果您的每个 IIS 7 网站都使用单个通用域名的子域(如下例所示),您可以获得 *.mydomain.com 的通配符证书,它将保护 site1.mydomain.com、site2 .mydomain.com 等。

另一方面,如果您的 IIS 7 站点都使用不同的域名(mail.mydomain1.com、mail.mydomain2.com 等),您将需要获得统一通信证书(也称为 SAN证书)。

在 IIS 7 上设置 SSL 主机标头 获取 SSL 证书并将其安装到 IIS 7。有关如何执行此操作的分步说明,请参阅在 Windows Server 2008 (IIS 7.0) 中安装 SSL 证书。 将证书安装到 IIS 后,将其绑定到 IP 地址上的第一个站点。 通过单击开始菜单并键入“cmd”并按回车键打开命令提示符。 通过在命令行上键入“cd C:\Windows\System32\Inetsrv\”导航到 C:\Windows\System32\Inetsrv\。 在 Inetsrv 文件夹中,针对需要使用证书的 IP 地址上的每个其他网站运行以下命令(复制这两行):

appcmd set site /site.name:"<IISSiteName>" /+bindings.[protocol='https',bindingInformation='*:443:<hostHeaderValue>']

 Replace <IISSiteName>  with the name of the IIS site and <hostHeaderValue> with the host header for that site (site1.mydomain.com)

在浏览器中测试每个网站。它应该显示正确的页面并显示锁定图标而没有任何错误。如果它打开第一个 IIS 站点的网页,则说明 SSL 主机头设置不正确。

【讨论】:

这是正确的,您可以使用 SAN 证书执行此操作。问题是,如果您已经拥有单独的 SSL 证书,则需要撤销它们并获得新的 SAN 证书,并且每次想要添加另一个域时,都需要一个新的 SAN 证书。 最后一部分是将通用 SSL 证书分配给站点。这可以通过编辑 SSL 绑定在 IIS 管理器中完成到单个站点,并且 IIS 管理器会自动将其添加到其他站点。【参考方案5】:

您不能在 IIS7 中 - 每个 HTTPS 绑定都需要唯一的 IP/端口组合,因为主机标头不能用于区分使用 SSL 的站点。这是因为在 SSL 握手期间主机标头不可见。

您的解决方法是通过绑定到不同的外部 IP 或绑定到 443 以外的端口来区分站点。我知道这两个选项都不理想。

这里有一个很棒的MSDN blog。

幸运的是,IIS8 似乎有Server Name Indication (SNI) 形式的解决方案。

有趣的是,这不是 IIS 的怪癖,Apache has the same issue,就像在引入 SNI 之前的任何 Web 服务器一样。

【讨论】:

我应该补充一点,您可以使用 IIS8 之前的 SAN 证书来拥有多个具有相同 IP+端口的 SSL 域。 SAN 证书允许使用单个证书保护多个域名。例如,您可以获取 myserver.com 的证书,然后添加更多 SAN 值以使相同的证书保护 myserver.org、myserver.net 甚至 myserver2.com 或 www.example.com。【参考方案6】:

我们还在端口 443 中托管多个站点,但每个站点都需要唯一的 IP 地址。 您不能仅使用一个 IP 地址将多个站点绑定到端口 443。 除非有解决方法,但我不知道有任何解决方法。

这篇文章可能会有所帮助: http://www.harbar.net/articles/ssl.aspx

【讨论】:

以上是关于同一个IP的443端口中的多个域的主要内容,如果未能解决你的问题,请参考以下文章

Plesk:如何将域端口 80 和 443 重定向到我的 Docker 容器?

跨 TCP 443 连接的 Amazon ELB 会话粘性?

阿里云ROS端口映射到外网的某个IP的443端口

阿里云ROS端口映射到外网的某个IP的443端口

[时间:2011-10-05 11:22:07][远程IP端口:122.228.196.222:1793][本机端口:443(TCP)][状态:自动阻止]

腾讯云COSClient怎么使用443端口