V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sherryxueli
V2EX  ›  推广

CDN HTTPS 安全加速基本概念、解决方案及优化实践

  •  
  •   sherryxueli · 2017-11-01 15:07:44 +08:00 · 1913 次点击
    这是一个创建于 2581 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家都知道,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 协议进行封装,主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

    HTTPS_1

    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 安全加速解决方案。 https_2

    举个例子,在一个具有两级节点的 CDN 分发架构中,从 Client 到 L1 节点再到 L2,再回源到源站,一共具有三段 TCP 连接,每一段都支持了 HTTPS。在这中间,在第一段 Client 到 L1 节点的时候,需要用户自己的证书。L1 到 L2 节点的时候使用的是我们的证书,保证了数据加密。回到源站的时候,如果用户也希望用 HTTPS,我们也可以通过配置实现整个链路的 HTTPS,充分保证了网站内容的防篡改、防劫持。

    以上方案,用户需要将证书和私钥传输到 CDN 的证书管理中心来去处理 HTTPS 的请求。同时,我们还有更进一步的方案。对于对自己的证书和私钥敏感性很高的用户,希望将私钥保存在自己的服务器上,减少泄露的风险。针对这种情况,我们推出了无私钥解决方案。首先,用户搭建私钥服务器,当 CDN 和 Client 之间产生了 HTTPS 握手的时候,CDN 处理的时候会提取 SNI,域名配置拿到后,向私钥服务器( KeyServer )请求签名或者解密预主密钥。这个方案,我们其实是把私钥的部分剥离出来,通过 KeyServer 来实现。目前,阿里云已经实现了自己的 KeyServer,用户只需要在自己的私钥服务器上安装一下 KeyServer 的 rpm 和配置一下即可。

    https_3

    阿里云 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 在性能方面到底做了哪些优化?

    https4

    第一, 我们知道,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 请求数资源包。

    1 条回复    2017-11-06 08:44:18 +08:00
    holulu
        1
    holulu  
       2017-11-06 08:44:18 +08:00
    原来是套路云的广告!
    KeyServer 开源吗?还是说就是 Cloudflare 的 Keyless ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3588 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.