我在 IIS 7 的端口 443(https) 中托管了一个网站“www.example1.com”。现在我为相同 IP 的“www.example2.com”购买了一个新域。我想在端口 443 中托管此域(www.example2.com)中的另一个网站(我已经将端口 443 用于“www.example1.com”)。
我怎样才能做到这一点?这是否可以在同一 IP 的端口 443 中托管两个域?如果是,任何人都可以让我知道正确的方法吗?我正在使用 IIS 7。
我在 IIS 7 的端口 443(https) 中托管了一个网站“www.example1.com”。现在我为相同 IP 的“www.example2.com”购买了一个新域。我想在端口 443 中托管此域(www.example2.com)中的另一个网站(我已经将端口 443 用于“www.example1.com”)。
我怎样才能做到这一点?这是否可以在同一 IP 的端口 443 中托管两个域?如果是,任何人都可以让我知道正确的方法吗?我正在使用 IIS 7。
可以办到。
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 主机头设置不正确。
您不能在 IIS7 中 - 每个 HTTPS 绑定都需要唯一的 IP/端口组合,因为主机标头不能用于区分使用 SSL 的站点。这是因为在 SSL 握手期间主机标头不可见。
您的解决方法是通过绑定到不同的外部 IP 或绑定到 443 以外的端口来区分站点。我知道这两个选项都不理想。
有一个很棒的MSDN 博客。
幸运的是,IIS8 似乎有一个服务器名称指示 (SNI)形式的解决方案。
有趣的是,这不是 IIS 的怪癖,Apache 也有同样的问题,就像在引入 SNI 之前的任何 Web 服务器一样。
We also host multiple sites in port 443 but we need UNIQUE IP addresses for each site. You cannot bind multiple sites to port 443 using only one IP address. Unless there is a work-around, but I'm not aware of any.
This article may help: http://www.harbar.net/articles/ssl.aspx
我目前使用 IIS 6.0。我设法使用端口 443 和不同的证书设置了多个网站。
从 IIS 管理器中,转到网站并编辑站点绑定。只需确保勾选 Require Server Name Indication 框并将 IP 地址保留为 All Unassigned。现在,通过从证书下拉列表中为站点选择适当的证书,您可以为多个站点使用相同的端口 (443)。
如果您使用通配符证书,只需在友好名称中使用格式 *.domainname.com,IIS GUI 将在您编辑绑定时为您启用主机名控制。