我在我们的一个项目环境服务器上遇到的一个问题上稍微拉了一下头发。我正在尝试从2个不同的代码库运行我们网站的2个不同版本。该网站有一个安全和非安全的区域。
我可以按照预期创建尽可能多的非安全网站。
我遇到的问题是,我似乎无法在同一个盒子上共存两个安全网站。
我已经为每个站点使用SelfSSL创建了证书。正如您所期望的那样,每个站点都在其自己的端口上,分别为443和444。
我发现,一旦我有安全网站A运行,那么安全网站B就会停止工作,尽管有自己的证书。然后当我修复站点B时,站点A停止工作。
有什么建议吗?
我使用的SelfSSL命令示例如下:
C:\Program Files\IIS Resources\SelfSSL>selfssl /T /V:600 /S:162950877 /P:444 /N:
CN=SITEREFRESH
服务器正在运行Windows Server 2003,所以我认为将是IIS5
本
答案 0 :(得分:0)
为什么不在两个网站上重复使用相同的证书?任何SSL证书都用于标识主机(服务器),而不是在不同端口(但具有相同主机名/ FQDN)上运行的服务器的子实例。
IIS完全有可能在两个不同的证书中使用相同的身份之间发生冲突,并且拒绝让两个站点都运行,证明具有不同证书的相同身份。在生产环境下,这可能被认为是企图用另一个证书欺骗服务器的身份,这会导致安全极客不寒而栗并从房间里尖叫。
答案 1 :(得分:0)
..可能的修复
答案 2 :(得分:0)
我知道这是一个古老的问题,但是不久前我发现自己也遇到了同样的麻烦,我想我应该发布解决问题的方式。首先,这是一个非常老的问题: https://blogs.msdn.microsoft.com/david.wang/2005/04/20/bug-selfssl-allows-only-one-website-to-have-ssl-at-a-time/
经过一连串的尝试和错误,似乎如果绑定在运行selfssl之前已经存在,那么证书将在这些绑定上起作用。例如:
appcmd set site "[site-name]" /+bindings.[protocol='https',bindingInformation='*:44302:']
selfssl /N:CN="[cert name]" /S:[site_id] /P:44302 /Q /T
appcmd set site "[other-site-name]" /+bindings.[protocol='https',bindingInformation='*:44301:']
selfssl /N:CN="[other cert name]" /S:[site_id] /P:44301 /Q /T
这将在同时起作用的不同站点上创建两个绑定(https://[site-name]:44301和https://[other-site-name]:44302)。看起来selfssl不会建立并签署多个绑定,而只会签署多个绑定。
PS。如果您想进一步了解该工具,请参见appcmd docs。