我有两个子域名指向同一个 IP 地址,即
sub1.example.com
sub2.example.com
每个子域都映射到 Windows Server 2008 R2 上 IIS 7.5 中的一个站点(假设分别为 sub1 和 sub2)。这两个站点都是非生产站点(一个开发站点和一个候选发布站点)。
我想做的是通过 SSL 证书在两个网站上启用 HTTPS,并通过端口 443 访问这两个网站。我已经下载了SelfSSL7以便生成要使用的证书,但我无法理解所有部分是如何组合在一起的。
据我了解,我需要通过以下方式为每个站点启用 HTTPS 绑定
Right Click -> Edit Bindings... -> Add Https binding
走这条路线不允许编辑Host Name
,在这种情况下sub1.example.com
我认为我需要设置为sub1.example.com
。
我可以使用 SelfSSL7 在命令行上生成证书
SelfSSL7 /N cn=sub1.example.com /K 2048 /V 3650 /I /S "sub1" /P443 /A * /T
这会在 IIS 7.5 中添加证书Server Certificates
,并将其添加为站点使用的证书sub1
。但是,HTTPS 绑定下的主机名sub1
仍为空白。
现在,如果我尝试sub2
使用上述命令生成另一个证书(并cn
适当替换名称和站点名称),则会出现一条消息
SSL Binding for *:443: already exists. Use /Q to overwrite
如果我理解正确的话,我生成的第一个证书将用于通过端口 443 的任何主机头。最终结果是对其中一个https://sub1.example.com
或sub2.example.com
两个的请求都会发送到sub1
站点。
我该如何正确配置它以实现我想要的功能。我要么漏掉了某个步骤,要么误解了证书的工作原理。任何帮助都将不胜感激,如果需要,我可以添加更多详细信息。
答案1
不,你不能这样做 - IIS 不支持在同一端口上使用不同的证书 - 每个 IP:端口对只有一个唯一的 SSL 证书(在此网站上搜索 -充足类似问题的答案,例如:在 IIS 7 上在同一 IP 上使用多个 SSL 证书)。
基本上你有两个选择:
将每个站点放在不同的 HTTPS 端口上:例如 444。您可以使用 URL 中包含的端口号访问此类站点(当用于开发或将不重要的站点放在 SSL 上时,这完全没问题)——
http://sub2.example.com:444/
生成/获取通配符证书 (
*.example.com
)。此站点提供了有关如何让多个站点使用一个此类证书的说明:http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html