HTTPS时代的到来是大势所趋!阿里云CDN如何助力企业网站进入HTTPS时代-阿里云开发者社区

开发者社区> 安全> 正文

HTTPS时代的到来是大势所趋!阿里云CDN如何助力企业网站进入HTTPS时代

简介: 无论是从Google的Chrome还是Mozilla的Firefox的数据统计来看,都可以表明未来一定是HTTPS的时代,并且这个时代已经离我们越来越近了。在本文中,阿里云技术专家王祖熙就为大家分享了阿里云CDN如何助力企业网站进入HTTPS时代。

摘要:在2015年,天猫和淘宝已经实现了全站HTTPS,并且在2015年底,阿里云CDN HTTPS产品化并且开始全面对外,并且为越来越多的客户提供HTTPS服务。无论是从阿里内部还是外部的同行,还从是Google的Chrome以及Mozilla的Firefox的数据统计来看,都可以表明未来一定是HTTPS的时代,并且这个时代已经离我们越来越近了。在本文中,阿里云技术专家王祖熙就为大家分享了阿里云CDN如何助力企业网站进入HTTPS时代。

本文内容根据演讲视频以及PPT整理而成。

本次的分享主要围绕以下三点:
  1. 什么是HTTPS?
  2. 为什么要使用HTTPS?
  3. 以及如何使用HTTPS和阿里云CDN是如何为企业网站提供HTTPS服务的

一、什么是HTTPS?

HTTPS中的“S”指的是Security,也就是安全。所以简单而言,HTTPS就是安全的HTTP,大家都知道HTTP是一个明文的超文本传输协议,其优势就是简单、快速和灵活,并且是无状态的。其缺点就是不够安全,HTTP直接运行在TCP层之上,因此其在网路之上传输的数据就是明文的,这样一来一些恶意的网络运营商就可以抓包进而获取其中传输的内容。


如果想要做到安全就需要进行加密传输,实现加密传输主要有两种方法,一种是在HTTP的业务层进行加密,这样就会非常耦合,并且这种方法是不通用的;另外一种方法就是使用HTTPS,HTTPS从网络模型来看就是在TCP层和HTTP层做一层中间的SSL层,由SSL层为HTTP层做数据的加解密服务。而对于HTTP层所需要发送的数据也需要经过SSL层进行加密之后发送给对端,通过这样的方式HTTP层就不需要去管理加解密的细节,这对于HTTP层而言是非常透明的,这样也会非常易于客户端和服务端的SSL层的实现和升级。

二、为什么需要HTTPS?

那么,究竟为什么需要HTTPS呢?这是因为互联网发展的速度变得越来越快,网络也变得越来越发达和复杂。而在利益的驱动下,一些恶意的运营商会对于用户的HTTP请求进行劫持或者篡改,在其中插入一些广告等以实现其业务推广。如果现在大家还是在使用HTTP为客户做服务可能还会经常遇到这样的问题,二目前也只有HTTPS才能从根本上解决这种劫持、篡改一些泄露等问题。


HTTPS时代的最大的推动者就是Google。在今年的年初,Google就在其安全博客上表明在2018年7月份会将所有的HTTP网站标记为不安全,而Firefox也会采用类似的做法。而现在已经是5月份的下旬了,距离7月份也就不到2个月的时间了,可以说HTTP时代马上就要到来了。到那时候,可能当大家去访问HTTP网站的时候在地址栏上就会显示出一个大的红色惊叹号表明该网站不安全,这样当访问HTTP网站的时候大家的心理就会变得不安,因为无法知道服务所提供的网页是否已经被中间的网络运营商篡改了。而登录注册等环节所提交的密码等信息可能就会被泄露了。

38a06afd5b2e8a6cc9ce46617bd0531b1ecb83b8

Google的这个表明也促使很多用户开始切入HTTPS,如下图所示的是Chrome浏览器加载HTTPS网站在各个国家的发展变化趋势。

6a37a932f4444052c3b5a48f823e2be7d274603b

图中最上面的是美国的趋势线,可以看出在2015年时候还不到50%,在2016年大概在50%~60%之间,在2017年已经上涨到了70%左右,现在已经达到了80%。而图中最下面的那条是日本的趋势线,这个相比而言就会少很多了,在2015年和2016年的时候趋势表现比较平稳,大概在25%左右,而在2017年的时候就翻了一倍到了50%,而目前已经超过了60%。这张图中没有中国的统计信息,可能的原因大致有两个,一方面在国内无法访问Google,另外一方面可能是国内的占比太小。估计目前国内的占比大致在40%左右,落后于美国三年,所以发展的空间也是非常大的,趋势也是比较明显的,未来会有更多的网站开始使用HTTPS。


下面列举了一些使用HTTPS的知名网站:
  • 搜索:谷歌、百度、Bing
  • 电商:天猫、淘宝、京东
  • 支付:支付宝、微信支付、所有手机银行&网银
  • 社交:微信、微博
  • 娱乐:今日头条、抖音、快手
  • 直播:虎牙、斗鱼、熊猫
可以说HTTPS适用于一切的Web领域,只要使用HTTP遇到了劫持、篡改以及泄露等问题就可以使用HTTPS解决。

三、如何使用HTTPS?
而一些用户没有使用HTTPS的原因,大概会有这样几个担忧:
  1. 证书。一些用户不了解证书是什么东西,以及如何申请和到哪里申请,也不了解申请下来的证书应如何配置,私钥又应该如何管理。而且在证书到期之前还需要重新申请和配置,因此非常复杂。
  2. 性能。担心是用了HTTPS之后使得其性能受到影响,比如服务器的HTTPS压力扛不住了,因为客户端需要做握手,因此会影响性能和体验。
  3. 体验。担心使用HTTPS之后使得用户体验下降,因为使用HTTPS之后需要进行SSL握手,而SSL握手就需要时间,这样就会影响用户的首包时间,进而影响用户体验。
  4. 难度。因为HTTPS里面要用到SSL握手,其不像TCP层那么简单只需要三次握手就可以了,其流程非常复杂,并且会涉及到一些密码学相关的内容,因此会比较复杂,也比较有难度,并且其都是加密的内容,出了问题也不好进行排查,不像HTTP通过抓包就可以实现。总而言之,就是使用HTTPS并没有那么简单,是具有一定难度的。

以上的种种原因导致用户对于HTTPS还是有一点恐惧的。那么,阿里云CDN-HTTPS是如何帮助用户解决以上这些顾虑的呢?

265f0b56269c0490244f4d1f702f56d2e27a361e

首先,看一下阿里云CDN HTTPS的业务流程,不管用户使用HTTP还是HTTPS去访问CDN都需要进行DNS解析,在访问到CDN的边缘节点之后,如果这些资源是静态资源就直接在CDN的边缘节点进行响应并返回了,如果访问的资源没有被缓存或者属于动态资源就需要回到源站服务器去进行获取并缓存到CDN。在用户这一侧,提供了HTTP和HTTPS两种方式进行访问。在开启了HTTPS之后也能够使用HTTP进行访问,如果想要实现全站HTTPS,那么CDN也提供像301跳转或者HSTS这种方式做重定向。用户侧也是最重要的,比如像劫持、篡改以及泄露等问题都经常发生在这一侧。比如一些视频网站为了收费常常在链接后面加上一些其他信息,如果这一侧使用HTTP进行服务,中间的网络运营商都可以进行劫持,看到相关的参数从而实现盗链,这样就会对于视频网站造成比较大的影响。在阿里云CDN内部默认走HTTPS做传输,对于特殊的需求,也会做协议跟随等方式进行传输,这是因为在阿里巴巴内部也经常会遇到劫持的问题,所以之后就是用HTTPS。在源站这一侧,用户可以根据自己的服务器支持情况进行配置,也可以支持HTTP回源、HTTPS回源或者协议跟随回源。这样的整个流程还是比较清晰和简单的。


阿里云HTTPS的产品特性主要体现在以下四个方面:即一键开启、功能丰富、秒级生效、稳定可靠。产品所对应的功能如下图所示。

4504c0bbebe7aeb02760911f29e3f7e86978afc3

阿里云HTTPS支持免费证书,可以一键开启HTTPS,而也支持在阿里云CA上购买的云盾证书,也支持用户的自定义证书。另外,阿里云HTTPS支持了业内90%以上的HTTPS功能,比如HTTP2、OCSP stapling 、HSTS、机会加密、KeyServer 、优化参数、TLSv1.3等,并且这些都可以实现动态配置,日加载和秒级生效。比如在控制台或者管控系统上进行了一些配置,从配置完成到生效的时间只需要几十秒即可,在CDN边缘机器如此之多的情况下,除了阿里云还没有哪个厂家能够实现如此之快的配置生效速度。比如配置了HTTP2,当发现问题之后就可以立即回滚,生效时间非常快。同样的,证书配置错误之后也可以立即回滚。此外,阿里云HTTPS服务还有稳定可靠的监控报警系统,这样可以帮助客户及时发现问题和处理问题。

前面所提到的配置的秒级生效都是由如下图所示的架构实现的,所有的HTTPS配置都可以通过管控系统实现。上面所说的那些丰富功能能够提供给用户进行配置的并不多,这是因为提供的功能越多,用户可能就会越恐惧,不知道如何配置。所以,阿里云HTTPS只将最简单的功能如证书配置、HTTP2的开关以及HTTPS的强制跳转等开放到用户的控制台。用户在控制台也可以选择云盾证书、自定义上传或者免费证书等,并且一键开启HTTPS。这些证书以及HTTPS的配置会同步到配置管理系统,而并不是同步到所有的自定义边缘节点服务器。当有HTTPS请求到达边缘节点服务器时,再动态地去配置管理系统中获取,并缓存到边缘节点服务器。之后切换证书并完成日加载,最终实现这一侧的SSL握手。不会同步到所有边缘节点机器的原因有几条,一是同步的机器越多,加载的速度就会越慢。其次是当同步到没有访问到的机器时只会白白地浪费内存,而且完全没有任何必要。

d8071480a21c9c6c8178d9f1e628cd1daca7a986

阿里云CDN HTTPS的免费证书可以解决用户对于证书的恐惧和担忧。现在云计算以及CDN的服务提供商提供HTTPS往往都需要让用户上传或者购买证书,这对于用户而言是一个负担,用户需要去选择CA的证书产商、证书的类型,并且需要额外地为证书付费,并且配合CA机构进行校验,辛辛苦苦申请完的证书还需要做配置以及进行管理,当证书到期了还需要进行重新申请和配置,这些都非常麻烦。而大多数用户对于HTTPS的需求无非是安全,其实并不关心证书是什么东西、也不关心怎样去申请以及如何去配置。所以阿里云CDN HTTPS最近推出了免费证书功能,这样用户就更加无需关心证书这些细节了,从而更加容易地使用HTTPS。

8a3bdd08f47c3a86c38fd8d2ce5e226ba9b8d12a

如下图所示的在CDN控制台上的HTTPS的配置,可以看到这里的配置是非常简单的,只有证书、HTTP2开关以及强制跳转等几项,点击修改配置之后可以发现有几种类型的证书可以选择,即云盾证书、自定义证书和免费证书。如果想要使用免费证书则需要勾选同意授权阿里云申请免费证书,这样就可以使用HTTPS了。而因为阿里云不是CA机构,所以并不能签发证书,所以需要用户进行授权。阿里云CDN只是帮助用户去做本来应该由用户自己去做的比较繁琐的事情,所以就需要确保域名需要cname到阿里云CDN,否则CDN是无法与CA实现配合校验的,当校验失败了CA也不会签发证书。

ac3fb331f9ab2e8978755f733d5e05b66df6e80a

第二个需要注意的就是CA域名的DNS里面有一个域名记录,域名记录的目的是防止其他家的CA误切域名证书,因为阿里云使用了DigiCert,所以需要将记录加进去。因为是免费证书,目前只支持一个域名,不支持泛域名。免费证书的有效期是一年,到期前一个月会自动申请和重新配置。从而使得用户完全不需要关注证书的细节了,而只需要关注HTTPS功能是否可用,并且在地址栏上是否验证是安全的。

109e14ca1c94c658c080aa1f38d1b0000596acff

如上图所示的是申请成功之后的界面,其中里面有几个信息,包括证书匹配的加速域名、有效时间、到期时间等,这就比只显示证书内容的方式友好很多了,因为大多数用户对于证书的内容并不感兴趣,而即便是非常专业的用户也需要借助一些平台才能知道证书里面的关键内容是什么。所以阿里云CDN HTTPS帮助用户将证书中的关键信息提取出来,使得用户在配置的时候就可以知道相关的信息。阿里云希望对于证书有恐惧和担忧的用户可以使用通过使用免费证书来使用HTTPS。

1dcb13c57800e7f968ba455a216d75704ed69483

另外一个优化就是阿里云CDN HTTPS即将发布TLSv1.3。TLSv1.3最初的提起是在2014年的时候,到目前为止已经经历了4年的时间,共计产生了28个版本的提案进行优化、讨论和修改,在今年3月份的时候被纳入了标准化。目前只有Chrome和Firefox两个浏览器支持TLSv1.3,但是在未来会有更多的浏览器支持。相对于TLSv1.2,TLSv1.3的主要特点就是更快和更安全。了解TLSv1.2的同学可能清楚,在TLSv1.2中握手需要两个RDT才能完成,而在TLSv1.3中握手只需要1个甚至0个RDT,所以比TLSv1.2更快。更加安全则体现在TLSv1.3只支持安全性更高的PFS秘钥交换算法,而不支持像RSA这样的不安全的秘钥交换算法。这是因为如果使用了RSA这种秘钥交换算法,之前保留的那些流量是可以通过私钥解密的。比如某个网络运行商将通过自己的流量都保存下来了,那么如果某一天其通过某种手段获取到私钥之后就可以完全解密所保存的流量,这样里面的账号、密码都被泄露了。此外,TLSv1.3从Server Hello之后就被完全加密了,连里面传输的证书外界都看不到,所以比TLSv1.2更加安全。


前面提到了一些用户会对于HTTPS有所担忧,这主要是因为性能和体验,而用户也不了解HTTP/2的优势。HTTP/2的优势主要体现在四个方面,首先HTTP/2是一个二进制协议,相对于HTTP/1.1而言有很大优势,可以进行多路复用、头部压缩以及服务端推送等。对于多路复用而言,当这个请求被服务端堵塞掉了,那么这个链接是没有办法被复用的,这就是著名的头部堵塞问题。而HTTP/2就对于多路复用问题进行了优化,在HTTP/2里面可以一直发送请求,而不需要等待上一个请求的响应,这样其连接的利用率就会非常高,并发量也会非常高,进而能够提升性能。而在HTTP/1.1里面,由于其是无状态的,所以在每次请求的时候总会带上user agent以及cookie这样比较大的头部,而在HTTP/2里面就进行了优化,因为HTTP/2是有状态的协议,当传输一次之后双方缓存之后,就没有必要再传了,这样就可以去掉冗余头部的传输,提高性能。另外一个优点是安全,目前所有浏览器都只支持TLS之上HTTP/2。

如下图所示的是HTTP/1.1和HTTP/2的网络加载拓扑图。可以看到HTTP/2的网络利用率更高,而HTTP/1.1中很多的请求都是在白白地等待。也可以看到HTTP/1.1里面需要用到6个SSL链接,而HTTP/2里面只需要用到1个,节省到昂贵的SSL请求,这样对于客户端和服务端都比较有益。

8b1bb8257f38ad3b3a39c006d03ad3261d9c7fbc

HTTPS主要有这样几个收益:
  • 加载性能可以达到500%
  • 头部压缩可以达到95%
  • 服务器的KBS性能提升60%

开启节点SSL Session性能优化的手段之一。SSL Session复用主要有两种方式,一种方式是Session ID,另外一种方式就是Session ticket。Session ID是不支持分布式这种场景的,分布式场景中将使用Session ticket进行优化,而Session ticket客户端支持率并不高,仅在40%到50%,所以主要还是以Session ID为主,当做了定制开发之后,Session ID的比例一下子提升了20%多,握手时间也从0多毫秒降低到不到70毫秒,效果也非常明显,这样就能够提升服务器的性能,减少首包时间。

81fbc9e2f74bfe4c3b4806e0dec9f4509387b204

下图所展现的就是阿里云所进行实时统计的错误类型以及根据错误类型进行的实时告警。如果没有这样的告警系统,业务往往会产生长时间中断。而这也是由阿里云成熟的架构作为保证的,而且阿里云HTTPS的配置也是秒级配置、热加载和秒级生效。

afee81aab15c92f657116ee9d7c39610d59a4669

最后和大家分享两个客户案例,其中一个是虎牙直播。直播平台所面临的最大的问题就是直播流黑屏和花屏。在前期,虎牙只用了HTTP没有使用HTTPS,所以经常会遇到在直播里面出现切屏以及花屏,因此被客户投诉。这是因为如果使用HTTP,那么网络运营商是可以直接修改视频帧的,可以直接进行替换,这样就会影响客户的体验。虎牙在使用了HTTPS之后就可以完全解决上述问题,性能上也没有太大的影响,效果也非常不错。

2c940c83265d26b4fcbfd684c1081473400dec80

第二个案例就是天猫和淘宝,他们是阿里云CDN的最大的内部客户。天猫和淘宝上传的图片以及CSS和JS等静态文件都是保存在阿里云CDN上的。早期,天猫和淘宝只是在比较关键的登录注册环节使用HTTPS,但是也经常出现像首页的大图被网络运营商替换并插入广告的情况,而这对于消费者而言是不知情的,可能出现被钓鱼的情况。于是在2014年经历了一年多的时间,在2015年天猫和淘宝实现了全站的HTTPS。


下图所展现的是天猫和淘宝在实现全站HTTPS之后的性能情况,可以看出其性能没有降低反而有20%到30%的提升了,所以用户并不需要担忧使用HTTPS所带来的性能问题。

f3d99ead1e41a21de9a07de7bac02e02f72a7392

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章