大家都知道,HTTP 本身是明文传输的,没有经过任何安全处理,网站 HTTPS 解决方案通过在 HTTP 协议之上引入证书服务,完美解决网站的安全问题。本文将为大家介绍阿里云 CDN HTTPS 安全加速传输的基础概念、解决方案、技术优势和优化实践。
关于 HTTPS 的那些基本概念
需求推进技术革命,互联网是如此诞生,HTTPS 也是这样。人们有在互联网上分享和浏览信息的需求,所以信息的传输技术由此诞生并不断升级。后来,人们位互联网上的信息传输制定了一些准则,也就是网络协议 HTTP。从最早 1991 年发布的 HTTP/0.9 版本,直到最新的 HTTP/2,传输速度也在不断升级。下面,我们来看下关于 HTTP 都有哪些基本的概念。
HTTP 是什么? HTTP 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准( TCP ),用于从 WWW 服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS 是什么? HTTPS 是安全超文本传输协议,英文全称:Hyper Text Transfer Protocol over Secure Socket Layer,它是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。它的工作原理是将 HTTP 用 SSL/TLS 协议进行封装,主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
SSL 是什么? SSL 是 Secure Sockets Layer 的缩写,它是一个安全套接层。架构于 TCP 之上的安全通讯协定,它可以有效协助 Internet 应用软件提升通讯时的资料完整性以及安全性。后来,标准化之后的 SSL 名称改为 TLS (是“ Transport Layer Security ”的缩写),中文叫做“传输层安全协议”。很多相关的文章都把这两者并列称呼( SSL/TLS ),因为这两者可以视作同一个东西的不同阶段。
什么是握手? 在加密传输之前,客户端和服务器首先必须建立连接和交换参数,校验通过之后进行协商密钥和传输数据,这个过程叫做握手( handshake )。
什么是加密和解密? “加密”的过程,就是把“明文”变成“密文”的过程;反之,“解密”的过程,就是把“密文”变为“明文”。在这两个过程中,都需要一个关键的东西——叫做“密钥”——来参与数学运算。
总结:简单来说,HTTPS 就是 HTTP 的安全增强版本,是 HTTP 协议与 SSL 加密协议的结合,所以也被称为 HTTP over SSL。
为什么要使用 HTTPS
HTTPS 概念其实已经提出来好多年了,但直到近两年,才开始被主流应用。所以,我们在给大家介绍 CDN HTTPS 解决方案之前,要先搞清楚,为什么要选择使用 HTTPS 来替换掉 HTTP。
第一, HTTPS 是更具安全性的传输协议,可以防止网站被篡改和劫持,这是最基本的功能。Chrome 和 Firefox 未来将 HTTP 标记为不安全的协议。 第二, Apple ATS,要求 IOS 的 9.0 或 10.0 的版本的 APP 使用 HTTPS 传输。 第三, 主流的浏览器已经支持基于 TLS 的 HTTP/2。 第四, Google 会给使用了 HTTPS 的网站进行搜索排名的加权,在鼓励大家使用。 第五, 美英政府的网站官网都已经转向 HTTPS。
我们可以看到,从用户需求到整个行业大趋势,都是在推送 HTTPS 的应用。那么阿里云 CDN HTTPS 的解决方案是怎样的呢?
CDN HTTPS 解决方案
HTTPS 能够有效的防止网站内容被篡改被劫持,加强了网站的安全性。所以在阿里云 CDN 内容分发网络中,我们已经引入 HTTPS 安全加速解决方案。
举个例子,在一个具有两级节点的 CDN 分发架构中,从 Client 到 L1 节点再到 L2,再回源到源站,一共具有三段 TCP 连接,每一段都支持了 HTTPS。在这中间,在第一段 Client 到 L1 节点的时候,需要用户自己的证书。L1 到 L2 节点的时候使用的是我们的证书,保证了数据加密。回到源站的时候,如果用户也希望用 HTTPS,我们也可以通过配置实现整个链路的 HTTPS,充分保证了网站内容的防篡改、防劫持。
以上方案,用户需要将证书和私钥传输到 CDN 的证书管理中心来去处理 HTTPS 的请求。同时,我们还有更进一步的方案。对于对自己的证书和私钥敏感性很高的用户,希望将私钥保存在自己的服务器上,减少泄露的风险。针对这种情况,我们推出了无私钥解决方案。首先,用户搭建私钥服务器,当 CDN 和 Client 之间产生了 HTTPS 握手的时候,CDN 处理的时候会提取 SNI,域名配置拿到后,向私钥服务器( KeyServer )请求签名或者解密预主密钥。这个方案,我们其实是把私钥的部分剥离出来,通过 KeyServer 来实现。目前,阿里云已经实现了自己的 KeyServer,用户只需要在自己的私钥服务器上安装一下 KeyServer 的 rpm 和配置一下即可。
阿里云 CDN 提供 HTTPS 安全加速方案,仅需开启安全加速模式后上传加速域名证书 /私钥,实现全网数据加密传输功能。
CDN HTTPS 的技术优势
• 支持 HTTP/2 功能 HTTP/2 是对 HTTP/1.x 进行加强,阿里云 CDN 现已全平台支持 HTTP/2,使用阿里云 HTTPS 加速服务的域名,即可免费享受 HTTP/2 服务。HTTP/2 是一个二进制的协议,支持头部压缩的功能,多路复用以及服务器推送,能够有效提升传输效率。
• 丰富的 HTTPS 配置项 阿里云 CDN HTTPS 可以以实现动态设置。举个例子,在实践中发现有些用户的 APP 对 HTTP/2 协议实现的不够完美,一种解法就是用户修改自己的 APP,把问题修复。另一种解法就是 CDN 通过配置把 APP 的 HTTP/2 协议给关掉,走 HTTP/1.1 协议,给用户足够的选择。
• KeyServer 无私钥解决方案 前文提到,对于对自己证书和私钥敏感度很高的用户,可保障证书和私钥安全性,支持自建 KeyServer,提供 KeyServer 解决方案和源码。
• 安全功能 HTTPS 协议是由 HTTP+SSL 协议组合构建的需身份认证的加密传输网络协议,可全方位保障安全性,防止敏感信息泄露,防止传输过程中流量被劫持,篡改,确保数据的完整性。
• 动态证书 支持动态证书,一个用户,如果想使用 HTTPS,在上传完证书和私钥之后,全网 1 分钟就可以生效了。提供多规格证书,支持免费证书、证书过期提醒、证书属性预览。并且与阿里云证书中心 CAS 联动,可以申请免费证书。
• 灵活付费方式 有后付费和预付费两种形式,后付费 HTTPS 0.05 元 /万次请求,预付费请求包也有 450 元,4000 元,35000 元各种规格,规格为 1 亿次、10 亿次、100 亿次(双十一折扣)。
HTTPS 相对于 HTTP 传输具有如此多的优势,那 HTTPS 在性能方面是否也同样超越 HTTP 呢?我们知道,阿里云 CDN HTTPS 可以减少回源率,提升通信效率,提高验证效率,减少跳转耗时,这些是通过哪些技术来实现优化的呢?下面我们来看看 CDN HTTPS 的优化实践。
CDN HTTPS 优化实践
首先,我们知道,阻碍 HTTPS 的性能提升的关键因素是传输变慢,因为 TCP 连接握手了之后,还要进行 SSL 的握手,多层的数据加解密以及证书传输。
那么 HTTPS 一定会变慢吗? 下图,是淘宝和天猫使用了 HTTPS 后的一些性能提升数据。其实我们可以看到,淘宝首页和搜索、聚划算、天猫等页面中,性能都是正向提升的。所以接下来,我们看看 CDN HTTPS 在性能方面到底做了哪些优化?
第一, 我们知道,SSL 在握手阶段是非常消耗资源的,SSL 本身也支持了 session ID 和 session ticket 这两种方式,第一种 session ID 是在 sever 端存储会话 ID,client 端下次请求时候如果携带了同样的 ID,就可以恢复以前的会话,省去了大量的握手环节。但是一个 client 访问不同 sever 的时候,存在 ID 共享的问题,实现起来比较复杂。第二种 session ticket 可以把会话的信息发给 client,client 去保存信息,不会依赖于某个 sever 了。 第二, 我们需要把 HTTP/2 协议用起来,多路复用和头部压缩都是可以提升传输效率的。 第三, 域名合并,对于主站和用户域名比较多的情况,我们就倾向于把域名做合并,合并成一个泛域名中做处理。这样可以减少 SSL 握手,提升重用,进而提升效率。 第四, 协议栈优化,这是各大 CDN 公司都在做的功能。传统协议栈是逐渐的试探并且越来越多发送数据的过程,初始化窗口会比较小。我们现在会针对性进行调整,并且提升快速重传的效率。 第五, 优先算法,优先预制 ECDSA 的算法,在产生相同加密强度的时候,数据量更少。
以上,都是为了更高效的传输和减少数据量,CDN HTTPS 所进行的一些优化实践。
另外,在峰值的应对上,除了自身的 HTTPS 优化,我们还需要在 Cache 系统上进行预热,全部都加载到一级节点,就不存在回源的问题了。另外,调度系统中,我们业务系统要给出预判峰值,同时 CDN 需要做热点地区的统计,与临近非热点地区分摊,依据节点能力按比例进行分配。当然,针对峰值情况,我们也需要做限流。
如何更好的使用 HTTPS
说了这么多 HTTPS 的好处,那用户可以如何更好的使用 HTTPS 呢? 第一, 证书的申请,根据域名的类型来申请,阿里云也提供证书服务,可签发 Symantec、CFCA、GeoTrust 证书。证书的分类有三种:DV、OV 和 EV。DV 是指基于域名级别的证书,机构只需要验证域名的所有者,安全级别比较低。OV 和 EV 是企业级别证书,除了验证域名所有者还要验证企业信息。EV 的证书,在访问时能够显示公司名字。 第二, 源站改造,包括页面资源的改造,TLS 版本选择 1.0 以上,关于 session ID 和 session ticket 的优化配置,证书上支持 SHA256 等工作。另外,实际应用中,有一个问题,当用户输入域名,我们可以通过配置强制 HTTPS 访问。
以上就是关于 HTTPS 的介绍,在用户访问安全、内容传输安全等使用场景中,阿里云 CDN 都可以提供相应的 HTTPS 安全加速解决方案,降低用户成本,实现加速与安全的双重效果。目前,阿里云 CDN HTTPS 已经全面降价,后付费 HTTPS 0.05 元 /万次请求。为了迎接双 11,预付费资源包也推出新购特惠:双十一当天 30 元购买 1 千万次 HTTPS 请求数资源包。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.