前不久小米等六家互联网公司发表联合声明,呼吁运营商打击流量劫持。流量劫持最直观的表现,就是网页上被插入了一些乱七八糟的广告/弹窗之类的内容。好比这样:nginx
网页右下角被插入了游戏的广告。apache
流量劫持整体来讲属于中间人攻击(Man-in-the-Middle Attack,MITM)的一种,本质上攻击者在通讯两端之间对通讯内容进行嗅探和篡改,以达到插入数据和获取关键信息的目的。目前互联网上发生的流量劫持基本是两种手段来实现的:浏览器
可以实施流量劫持的根本缘由,是 HTTP 协议没法对通讯对方的身份进行校验以及对数据完整性进行校验。若是能解决这个问题,则流量劫持将没法轻易发生。安全
关于流量劫持的更多危害案例,能够参考:如何看待小米等联合声明:呼吁运营商严格打击流量劫持?( https://www.zhihu.com/question/38861118 )服务器
HTTPS,是 HTTP over SSL 的意思,提到 HTTPS 就不得不先简单描述一下 SSL/TLS 协议。SSL 协议是 Netscape 在 1995 年首次提出的用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、数据的私密性保护以及对数据完整性的校验等功能。1999 年 IETF 将 SSL 3.0 标准化,是为 TLS 1.0 版本,目前 TLS 协议的最新版本是 1.2 版本,TLS 1.3 标准正在制定中。为了方便,下文将 SSL/TLS 协议都简称为 SSL 协议。网络
SSL 协议在 HTTP 请求开始以前增长了握手的阶段,其粗略流程以下图所示:优化
因而可知,由于 SSL 协议提供了对服务器的身份认证,因此 DNS 劫持致使链接错误服务器的状况将会被发现进而终止链接,最终致使 DNS 挟持攻击没法实现。此外 SSL 协议还提供数据的加密和完整性校验,这就解决了关键信息被嗅探以及数据内容被修改的可能。网站
要将网站进行 HTTPS 支持以达到防劫持的效果,首先须要的是为网站的域名搞一张证书。这个证书必须是由知名 CA 所签发的,这是由于知名 CA 的根证书普遍的存在于大多数浏览器和操做系统中,所以能够被客户端用来校验网站证书是否合法。阿里云
传统 CA 的证书签发流程大致相同,基本上都是根据证书认证的级别,进行一系列不一样流程的认证,而后认证经过后申请者缴纳相应的费用就能够或获得证书。这个流程相对比较繁琐,尤为是对于我的和小型网站管理者来讲搞起来也确实麻烦。这里推荐一种新型的方法——使用 Let’s Encrypt 的自动化服务获取免费的证书。加密
使用 Let’s Encrypt 的自动化服务获取免费的证书
Let’s Encrypt 项目是由 ISRG 提供的免费 CA 服务,其主要目的是减小证书获取的难度,将证书的签发/续签/做废等操做进行自动化处理。Let’s Encrypt 的使用方法很是简单,按照文档中步骤操做便可。如需进一步了解如何使用 Let’s Encrypt 自动获取免费证书,能够参考:用 Let’s Encrypt 获取免费证书 (
https://www.paulyang.cn/blog/archives/39?spm=5176.blog2666.yqblogcon1.11.i02BAh )
在得到到证书(以及对应的私钥)以后,主要有以下几种方法来使用:
阿里巴巴在 2015 年的双 11 期间,成功的使用了全站范围(包括淘宝、天猫等核心电商域名)的 HTTPS 为广大买家提供安全的购物体验,这种体量的 HTTPS 服务在业界也极为少见。阿里云在进行电商业务的 HTTPS 改造时,在密码学、SSL/TLS 协议以及 PKI 体系等领域进行了一系列的优化和创新,并在此过程当中积累了大量宝贵的经验。
阿里云作为底层基础设施的提供者,在阿里全站 HTTPS 化的过程当中提供了大量的技术支撑,阿里云的 CDN 和 SLB 等产品在 HTTPS 的加速以及卸载等环节发挥了重要的做用。所以但愿能将在淘宝/天猫业务上积累的 HTTPS 领域的经验和成果,借助阿里云的平台,让更多人来使用,籍此但愿跟多的互联网流量可以 HTTPS 化,让流量劫持再无可能。