随着虚拟主机技术的发展,功能愈来愈丰富,已经不只仅只是知足我的网站的须要,愈来愈多的小型电子商务网站也采用了虚拟主机来建站,如何为这些商户提供经济、方便的SSL解决方案,成为虚拟主机供应商的业务新增加点。html
为何我不能在相同IP地址下多个域名的虚拟主机上使用SSL?api
这个问题十分专业,有些像“先有鸡仍是先有蛋”的问题。SSL协议层是在HTTP协议层下面的,当SSL链接创建时,SSL模块在Web模块以前和 浏览器进行通信并交换证书、创建加密隧道。众所周知,Web服务器是经过HTTP数据包中的”Host”字段来区分虚拟主机的。而SSL模块在把服务器证 书发送到浏览器时,尚未收到任何关于HTTP的数据包,更不知道虚拟主机的域名,所以SSL模块只能固定的将一张SSL证书发送到浏览器,而不能根据域 名有选择性的发送证书。所以,您没法在一个IP地址的默认SSL 443端口下为多个虚拟主机配置多张证书。浏览器
因为一个IP与一个端口号只能对应一张证书,所以咱们能够采用如下方式来解决:安全
一、为须要SSL加密的虚拟主机配置不一样的IP地址,端口号都使用443。例如: www.domain1.com 的SSL使用 202.96.101.1:443 www.domain2.com的SSL使用 202.96.101.2:443,经过 https://www.domain1.com 和 https://www.domain2.com 访问这2个SSL网站了服务器
二、若是只有一个IP地址,能够为多个网站配置不一样的SSL端口。例如: www.domain1.com 的SSL使用 202.96.101.1:443 www.domain2.com的SSL使用 202.96.101.1:1000,经过 https://www.domain1.com 和 https://www.domain2.com:1000 访问这2个SSL网站了负载均衡
若是多个虚拟主机是1个主域名下的多个子域名,状况发生了转变,由于你能够申请通配符SSL证书。dom
例如: 有2个虚拟主机 abc.domain.com、xyz.domain.com,你申请一张 *.domain.com的证书,按照前面所说的原理,2个虚拟主机都使用同一个IP和默认的443端口,当浏览器访问IP:443端口时,SSL模块把 通配符SSL证书传送给浏览器,创建合法的SSL隧道,而后WEB模块接收到HTTP数据包时判断域名选择虚拟主机。网站
原理是OK的,不幸的是你没法按照这个原理对IIS进行配置,IIS不支持SSL端口配置域名。若是仅依靠IIS,你不得不使用上面的2个方法(不一样的IP地址或者不一样的端口号)。ui
若是仅有1个IP地址,采用方法2时,abc.domain.com 使用 443端口、xyz.domain.com使用1000端口,你会发现一个现象,因为SSL端口不区分域名,所以 https://abc.domain.com仍是https://xyz.domain.com都是指向abc.domain.com网站内容,而 https://abc.domain.com:1000仍是https://xyz.domain.com:1000都是指向 xyz.domain.com网站内容的。固然这也有好处,你能够在abc.domain.com下放一个程序,程序判断一下域名,若是用户访问 https://xyz.domain.com就立刻跳转到https://xyz.domain.com:1000,不会有任何的安全警告。加密
幸运的是,经过SSL反向代理服务器,你能够解决这个问题。就是使用第三方的SSL模块来替代IIS处理SSL加密,将证书安装反向代理服务器中, 浏览器访问SSL反向代理服务器,而后反向代理服务器使用HTTP协议访问你的Web服务器。你能够选择SSL反向代理硬软件有: 一、支持SSL的负载均衡器,如F五、ArrayNetworks
二、使用ISA Server 2004软件。
三、使用免费的Squid软件。
四、使用免费的Stunnel软件。
五、使用PortTunnel软件。
咱们推荐虚拟主机服务商采用:(RapidSSL),由于它具备: • 高性价比: RapidSSl证书价格便宜,考虑到租用虚拟主机的客户对价格相对敏感,这款证书是最有吸引力的。 • 申请便捷: 经过GeoTrust专有的在线申请技术,只验证域名全部权,可在10分钟内得到证书签发,这不只能够帮助虚拟主机服务商下降人工成本,并且能够实现用户申请流程自动化。 • 安装简单,方便快捷; • 兼容性强: 兼容99%以上的浏览器和Web服务器