IIS服务器多域名部署多个HTTPS的方法

当我们使用windows服务器配置多站点SSL证书时,经常报错提示“至少一个其他网站正在使用同一HTTPS绑定,而此绑定用另一证书配置,确实要重用此HTTPS绑定并将其他网站重新指定使用新证书吗?”由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终IIS只好使用第一个绑定到该IP:PORT的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。

from clipboard

默认情况下,使用IIS8以下版本的HTTPS绑定是无法指定主机名的。“主机名”的内容是灰色不可编辑的。这就带来了一个很大的问题,当一台IIS服务器上绑定两个不同的域名,主机上只能启用一个网站的HTTPS,第二个网站的HTTPS无法启用。

当我们遇到这样的问题有以下几个解决方法:

一、是为每个站点分配一个独立的ip,这样冲突就解决了,甚至主机头也不用添加了。

二、是使用通配证书。我们采用通配证书颁发给*.abc.com,如果我们采用颁发给*.abc.com的证书,这样任何访问的请求均可以通过该证书解密,证书匹配错误也就不复存在了。

三、是升级为IIS8,IIS8中添加的对于SNI(Server Name Indication)的支持,服务器可以通请求中提取出相应的主机头从而找到相应的证书。

四、如果您不想升级IIS版本,只有想办法把灰色不可编辑的主机名修改即可,这个需要手动完成。

由于前两种方式,增加ip和购买通配符证书,都会增加我们的成本。我们重点讲后两种方式:

我们首先讲一下后升级IIS方式,由于小编的主机已经是IIS8版本就直接开始操作了。

安装服务器证书,进入IIS,点击主机名,选择服务器证书,如下图:
from clipboard


点击右侧导入,如下图:

from clipboard

选择自己的证书文件,确定即可:

from clipboard

添加网站绑定,如下图
from clipboard


注意:这里类型选择https,端口选择443,主机名填写自己的域名,必须勾选“需要服务器名称指示”前的勾选框,SSL证书选择自己网站的证书;点击确定,我们进行测试如果浏览器中两个网站地址栏呈现类似以下状态,则配置成功:

IIS服务器多域名部署多个HTTPS的方法(图6)

下面我们再说一下IIS7的配置

首先找到IIS配置文件的位置在:
from clipboard


注意:这个文件可以无法直接打开编辑,可以先把它复制到桌面上去编辑,编辑完毕后再覆盖回去。

找到如下位置:

<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控制台(不用重启),可以看到主机名已经成功绑定上了。

这时候就可以正常启用站点了。

玩咖指针 2022-06-03 23:26:13