如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about

如果你经常使用铜币置顶主题,持有 V2EX Solana Token 会在每日签到时获得额外铜币:
https://www.v2ex.com/solana
sherryxueli
V2EX  ›  推广

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

  •  
  •   sherryxueli · Nov 1, 2017 · 2400 views
    This topic created in 3210 days ago, the information mentioned may be changed or developed.

    大家都知道,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 replies    2017-11-06 08:44:18 +08:00
    holulu
        1
    holulu  
       Nov 6, 2017
    原来是套路云的广告!
    KeyServer 开源吗?还是说就是 Cloudflare 的 Keyless ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2632 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:29 · PVG 19:29 · LAX 04:29 · JFK 07:29
    ♥ Do have faith in what you're doing.