IIS多站点多域名同时部署多个不同SSL证书HTTPS实现方法

时间:2019-04-01 13:46 / 来源:未知 / 作者:酱油 / 点击:

题外话:最近想做几个小站,使用SSL证书,之前再阿里云买了一个三年的ECS实例,所以打算把新增加的网站放到上面,结果遇到一个问题,只能一个站使用HTTPS,否则端口冲突,于是把之前的IIS7.5的数据备份,把实例创建快照,更换系统盘到 windows server 2012 r2,为的就是使用本文所讲述的第四种方法,用IIS8.5来解决这个问题,结果IIS7.5备份的数据导入不了8.5,于是又把数据换回来,重新挂载windows server 2008的系统盘,折腾了一整天,还是重新再创建了一台ECS实例,便宜货,加20G SSD盘,一年大概700元吧,比做活动的时候贵,但是比其他IDC来说好多了,至少阿里云用习惯后,发现真的很智能,而且稳定。新的ECS用的windows server 2012 r2的系统,自带IIS8.5,经过测试,完全没有问题,轻松方便简单实现IIS多站点使用https的问题。

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

解决方法如下:

  1. 第一种解决方案将每个https站点绑定到不同的端口。但是这样的话客户端浏览网页时必须手动指定端口,例如 https://site.domain.com:444

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

  3. 第三种解决方案是使用通配证书。我们采用通配证书颁发给.domain.com,对于我们的示例中,应该采用颁发给.marei.com的证书,这样任何访问该domain的请求均可以通过该证书解密,证书匹配错误也就不复存在了。

  4. 第四种解决方案是升级为IIS8,IIS8中添加的对于SNI(Server Name Indication)的支持,服务器可以通请求中提取出相应的主机头从而找到相应的证书。

方案分析:

方案1明显不太现实,我们不能让用户在访问我们的网站时还要指定端口号,一来不太好记,二来用户体验不好;

方案2虽然可行,但由于我们使用的是阿里云的服务器,是固定IP,没办法再给服务器再分配一个IP,故该方案不适合我们的场景;

方案3虽然可行,但我们使用的是域名型SSL证书,而且要购买通配型SSL证书的话,价格也比较贵,故该方案不适合我们的场景;

方案4,我们使用的服务器安装的操作系统是Windows Server 2012 R2,而该系统预装的就是IIS8,不是IIS8的可以自行升级为IIS8,在IIS8中,因为添加了对SNI的支持(具体概念及原理,读者可自行查阅相关资料,这里就不多说),所以可以很方便的解决我们所面临的问题。

现在就方案4做一下具体使用说明:

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

点击右侧导入,如下图:

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

添加网站绑定,如下图

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

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

解决方案参考原文:https://help.aliyun.com/knowledge_detail/48032.html

猜你喜欢

推荐栏目

DEDECMS
DEDECMS

DEDE使用经验和技巧

WordPress
Wordpress

WP使用经验和技巧

Zblog
Zblog

Zblog使用经验和技巧

CSS
CSS

CSS使用经验和技巧

网络资料
网络资料

转载实用网络资料

按键伤人
按键伤人

转载乱七八糟的网络资源

我是酱油
我是酱油

随笔札记 记录生活点滴

本站推荐

百度站内搜索

专业博客主机