使用windows服务器配置多站点多SSL证书时,经常报错提示“至少一个其他网站正在使用同一HTTPS绑定,而此绑定用另一证书配置,确实要重用此HTTPS绑定并将其他网站重新指定使用新证书吗?”由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终IIS只好使用第一个绑定到该IP:PORT的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。
默认情况下,使用IIS8以下版本的HTTPS绑定是无法指定主机名的。“主机名”的内容是灰色不可编辑的。这就带来了一个很大的问题,当一台IIS服务器上绑定两个不同的域名,主机上只能启用一个网站的HTTPS,第二个网站的HTTPS无法启用。
当我们遇到这样的问题有以下几个解决方法:
一、是为每个站点分配一个独立的ip,这样冲突就解决了,甚至主机头也不用添加了。
二、是使用通配证书。我们采用通配证书颁发给*.abc.com,如果我们采用颁发给*.abc.com的证书,这样任何访问的请求均可以通过该证书解密,证书匹配错误也就不复存在了。
三、是升级为IIS8,IIS8中添加的对于SNI(Server Name Indication)的支持,服务器可以通请求中提取出相应的主机头从而找到相应的证书。
四、如果您不想升级IIS版本,只有想办法把灰色不可编辑的主机名修改即可,这个需要手动完成。
由于前两种方式,增加ip和购买通配符证书,都会增加我们的成本。我们重点讲后两种方式:
我们首先讲一下后升级IIS方式,由于小编的主机已经是IIS8版本就直接开始操作了。
安装服务器证书,进入IIS,点击主机名,选择服务器证书,如下图:
点击右侧导入,如下图:
选择自己的证书文件,确定即可:
添加网站绑定,如下图
注意:这里类型选择https,端口选择443,主机名填写自己的域名,必须勾选“需要服务器名称指示”前的勾选框,SSL证书选择自己网站的证书;点击确定,我们进行测试如果浏览器中两个网站地址栏呈现类似以下状态,则配置成功:
IIS服务器多域名部署多个HTTPS的方法(图6)
下面我们再说一下IIS7的配置
首先找到IIS配置文件的位置在:
注意:这个文件可以无法直接打开编辑,可以先把它复制到桌面上去编辑,编辑完毕后再覆盖回去。
找到如下位置:
<bindings> <binding protocol="net.tcp" bindingInformation="808:*" /> <binding protocol="net.pipe" bindingInformation="*" /> <binding protocol="net.msmq" bindingInformation="localhost" /> <binding protocol="msmq.formatname" bindingInformation="localhost" /> <binding protocol="http" bindingInformation="*:80:www.abc.com" /> <binding protocol="https" bindingInformation="*:443:" /> </bindings>
我们修改一下*:443:这部分内容的配置,修改成如下配置:
<binding protocol="https" bindingInformation="*:443:www.abc.com" />
修改完成后,将文件覆盖回去,这时回到IIS控制台(不用重启),可以看到主机名已经成功绑定上了。
这时候就可以正常启用站点了。