我已经在IIS 7的端口443(https)托管了一个网站"www.example1.com“。现在我为"www.example2.com”购买了一个相同IP的新域名。我想在这个域中的另一个网站(www.example2.com)的端口443 (我已经使用端口443为"www.example1.com")。
我该怎么做呢?是否可以在同一IP中的端口443中托管两个域?如果是,谁能告诉我正确的方法?我正在使用IIS 7。
发布于 2015-10-07 10:08:40
这是可以做到的。
IIS 7中的SSL主机标头允许您对同一IP地址上的多个IIS网站使用一个SSL证书。通过IIS管理器界面,IIS仅允许您使用SSL证书将每个IP地址上的一个站点绑定到端口443。如果您尝试将IP地址上的第二个站点绑定到同一证书,则在启动站点时,IIS 7将给您一个错误,指出存在端口冲突。为了分配供同一IP地址上的多个IIS站点使用的证书,您需要按照以下说明设置SSL主机标头。
您需要哪种类型的SSL证书?因为您只能使用一个证书,所以该证书需要与您使用它的网站的所有主机名一起使用(否则您将收到名称不匹配错误)。例如,如果您的每个IIS7网站使用单个公共域名的子域(如下例所示),您可以获得*.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”并按enter键,打开命令提示符。在命令行中键入“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主机标头未正确设置。
发布于 2014-02-21 06:38:07
你不能使用IIS7 --每一个HTTPS绑定都需要一个唯一的IP/端口组合,因为主机报头不能用来区分使用SSL语言的站点。这是因为主机报头在SSL握手期间不可见。
您的解决方法是通过绑定到不同的外部IP或绑定到443以外的端口来区分站点。据我所知,这两种选择都不太理想。
这上面有一个很棒的MSDN blog。
幸运的是,IIS8似乎有一个以Server Name Indication (SNI)形式存在的解决方案。
有趣的是,这并不是IIS的怪癖,Apache has the same issue,在引入SNI之前的任何web服务器都是如此。
发布于 2020-02-27 16:09:19
在iis 7.5或更新版本中-站点>添加网站-站点名称: example2.com -物理路径:选择目录-绑定:与example.com相同的ip -主机名: example2.com,然后在绑定中选中这两个网站

https://stackoverflow.com/questions/12214475
复制相似问题