当一个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,
如果浏览器中两个网站地址栏呈现类似以下状态,则配置成功:

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

iis 配置多域名,多https的更多相关文章

  1. win7下IIS配置以及域名映射方法

    win7下IIS配置以及域名映射方法 第一步:打开控制面板,选择程序与功能,如下图: 第二步:双击打开程序与功能面板,如下图: 第三步:打开”打开或关闭windows功能”(红线圈起来的地方),如下图 ...

  2. IIS 配置Http重定向到Https

    注意首先要安装url重定向模块    https://www.microsoft.com/zh-CN/download/details.aspx?id=7435 然后在web.config末尾添加如下 ...

  3. 【原创】CA证书申请+IIS配置HTTPS+默认访问https路径

    一.CA证书申请 (一). 新StartSSL注册帐号 1.    StartSSL官网 官方网站:https://www.startssl.com/ 2.    进入到StartSSL后,直接点击注 ...

  4. CA证书申请+IIS配置HTTPS+默认访问https路径

    引用别人博文内容:https://www.cnblogs.com/lichunting/p/9274422.html 一.CA证书申请 (一). 新StartSSL注册帐号 1.    StartSS ...

  5. Nginx配置同一个域名同时支持http与https两种方式访问

    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...

  6. [转帖]一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS

    一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS https://home.cnblogs.com/u/beyang/ 一台服务器,两个域名 首先购买https,获取到CA证 ...

  7. iis配置绑定二级域名的问题

    最近用destoon给客户做一个网站,涉及到站内企业网站的二级域名解析的问题,iis怎么配置绑定子目录绑定二级域名呢,查了好多资料,没有一个给出具体步骤的 基本是一些概念,不过看了这些东西基本理解了泛 ...

  8. centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问

    acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...

  9. 如何解决IIS配置HTTPS证书后刷新消失问题

    IIS配置CER证书后完成证书申请后刷新后就会消失的这个BUG微软一直存在,因为我们一般申请都是下来的CER文件和私钥 但是IIS只支持PFX文件的导入,所以我们需要把CER文件和证书私钥转换成PFX ...

随机推荐

  1. 给Elasticsearch 5.2.2 设置用户权限 how to setting security for elasticsearch on windows

    1. download the plugin of elasticsearch: 下载 readonlyrest-1.14.0_es5.2.2.zip 2. install readonlyrest ...

  2. phantomjs 的安装部署

    下载地址http://phantomjs.org/download.htmlwget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs ...

  3. Java:多线程,CyclicBarrier同步器

    1. 背景 CyclicBarrier类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此 ...

  4. Android 版本对于 API

    Android版本 API 代号 官网链接 Android 2.3.3 API 10 Gingerbread 官网 Android 3.0 API 11 Android 3.1 API 12 Andr ...

  5. Scala语言开发入门

    在本系列的第一篇文章 <使用递归的方式去思考>中,作者并没有首先介绍 Scala 的语法,这样做有两个原因:一是由于过多的陷入语法的细节其中,会分散读者的注意力.反而忽略了对于基本概念,基 ...

  6. 【Unity】7.5 移动设备输入

    分类:Unity.C#.VS2015 创建日期:2016-04-21 一.简介 在iOS和Android系统中,操作都是通过触摸来完成的.Input类中对触摸操作的方法或变量如下图所示: 通过GetT ...

  7. 深入理解Linux内核-进程地址空间

    给内核分配内存和给用户态进程分配内存是有区别的:1.内核的优先级最高,如果某个内核函数请求动态内存,不会被延时2.内核信任自己,不必保护措施3.用户态进程对动态内存的请求被认为不是紧迫的,总是被尽量推 ...

  8. tmux使用及配置

    这篇博客跟以前的vim配置一样,都是为了以后本人自己方便备份的tmux配置文件 0.安装 centos默认自带的软件是screen,没有带tmux,所以需要源代码安装 get clone http:/ ...

  9. rpm 安装zabbix 注意

    # grep zabbix /etc/sudoers zabbix ALL=(ALL) NOPASSWD: /sbin/blockdev

  10. 【C/C++】深入理解指针和数组的关系

    对数组名进行取地址运算 ,,}; ] = &a; //注意左值 对数组名取地址,得到的指针为指向整个数组的指针. 形参数组 形参为数组时勿须带数组长度,因为计算机不会处理,如果需要传数组长度, ...