我爱帮助网--QQ交流群号

Nas交流与矿渣群(unraid 群晖 猫盘 蜗牛等):372167400         物联网/智能家居群:518812757             帮助教程:手册大全

软件使用与建站群:1057308983      虚拟化交流群:13448651

同一台服务器不同网站使用不同的SSL证书(解决至少一个其他网站在使用同一https绑定问题)

2020-04-01 08:00:00
zstmtony
原创
5547

一、待解决问题:


1.如何在同一台服务器上的不同站点使用不同的SSL证书(https)

2.至少一个其他网站在使用同一https绑定(不同站点使用不同的SSL证书)

3.一个服务器使用多个ssl证书(https)


发现网站上有很多网友都有类似的问题:

1. 同一网站两个域名安装了两个免费ssl数字证书,只有一个能正常使用,不修改端口怎么实现两个免费ssl证书都可以使用。

2. 一个iis创建了两个https协议的网站,两个网站都是二级域名,申请的都是免费的SSL证书,后面一个网站选择SSL证书的时候遇到问题了,iis暂只能绑定一个证书,求大神指点



我的出错过程:


在阿里云之前使用了免费的ssl证书,最近又增加了一个新的网站,又申请了一个新的免费的ssl证书,在部署https访问时遇问题:


两个站点是共用一台阿里云的服务器,在这台服务器上分别部署着各自的网站,2个网站申请了自己网站域名对应的阿里云的免费版域名型SSL证书,但在给网站绑定SSL证书时,发现只有一个网站能实现https安全访问

在给另一个网站绑定域名时,总提示至少一个其他网站在使用同一https绑定,保存后再打开,发现2个网站绑定的SSL证书是一样的,即使你选择是不同的证书,就好象2个证书分不清,都转向了同一个。那如何解决这个问题呢


   




二、网上的解决办法


1.将每个https站点绑定到不同的端口。如一个使用443 ,一个使用444,但是这样的话别人浏览你的网站时必须手动指定端口,例如 https://www.52help.net:444, 不太好记 使用比较麻烦,对SEO也不利 用户体验
  所以这个方案不太现实,我们不能让用户在访问我们的网站时还要指定端口号。
2.为每个站点分配一个独立的ip,这样就可避免冲突,甚至主机头也不用添加了,但代价是购买更多的IP,在有些服务商,增加一个新IP需要1000-2000元,是一笔不小的花销
3.使用通配证书也可解决这个问题,但通配型SSL证书会更贵。每年至少比普通域名型SSL证书要高出好几千。代价也有点大
4.升级为IIS8,IIS8中添加的对于SNI(Server Name Indication)的支持,服务器可以从请求中提取出相应的主机头从而找到相应的证书。
  我们使用的服务器安装的操作系统是Windows Server 2012R2,而该系统预装的就是IIS8.5,不是IIS8的可以自行升级为IIS8,在IIS8中,因为添加了对SNI的支持  可以很方便的解决我们所面临的问题。

三、我选择最后这种经济解决方案,步骤如下


1. 安装服务器证书,进入IIS,点击主机名,选择服务器证书,如下图 (安装证书也可使用MMC命令,打开证书来安装)

    

    导入证书 

    

   点击右侧导入, 选择自己的证书文件,确定即可

   


    另一种导入证书的方法:MMC命令方式 添加证书的方法(可选)

    也可使用 MMC,添加或删除管理单元,选择证书 确定

   

    选择计算机账户

   

   本地计算机

    

    证书 个人 所有证书 导入

    

    选择你的证书 pfx 文件导入,再输入 密码,导入即可

    


2.给自己的网站绑定相应的SSL证书:从IIS网站中选择自己的网站,右键,编辑绑定    


3.添加网站绑定,如下图

   


     注意:类型选择https,端口号输入443,主机名填写自己的域名

     而且一定注意:“需要服务器名称只指示”前面的勾选框必须勾选,这个是解决问题的关键,SSL证书选择自己网站的证书(这里的选项是之前导入的证书)


    

    关键是勾选“需要服务器名称指示”。

    不然会提示“至少一个其他网站在使用同一https绑定”导致证书绑定失败

    

    

   



4. 确定后,SSL证书绑定成功,可使用https访问网站了

     用同样的方式配置另外一个网站(只是 主机名和SSL证书不同,其他配置操作方法一样)


5.这样,两个网站都已配置成可以使用https访问


6. 如果浏览器中两个网站地址栏呈现认证的图标,则配置成功:

       



相关文章




当一个https的请求到达IIS服务器时,https请求为加密状态,需要拿到相应的服务器证书解密请求。由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终IIS只好使用第一个绑定到该IP:PORT的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。

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

安装服务器证书,进入IIS,点击主机名,选择服务器证书

点击右侧导入

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

添加网站绑定

注意:类型选择https,端口号输入443,主机名填写自己的域名,“需要服务器名称只指示”前面的勾选框必须勾选,这个是解决问题的关键,SSL证书选择自己网站的证书(这里的选项是之前导入的证书);
6.确定后,该网站SSL证书绑定成功,可以使用https访问该网站,同样的方式,你需要配置另外一个网站(PS:除过主机名和SSL证书不一样外,其他配置都是一样的);
7.至此,两个网站都已配置成可以使用https访问;
8.测试是否成功:浏览器地址栏输入你要访问的地址:如https://www.domain.com,
如果浏览器中两个网站地址栏呈现类似以下状态,则配置成功:


如果一步一步操作到这里,那么恭喜你,你已经解决了这个问题。



0
发表评论
评论通过审核后显示。
文章分类
联系我们
联系人: 王先生