阿里云CDN近期新增了HTTPS加速和IPv6协议加速两项增值服务,进一步提升了内容分发的安全性、兼容性与灵活性。其中,HTTPS加速通过双证书方案实现CDN节点与源站证书分离,形成双重保障,降低私钥泄露带来的单点风险,并通过SNI技术解决IP资源紧张场景下多域名HTTPS握手问题;同时,HTTPS keyless方案支持客户仅将公钥部署至CDN,私钥仍保留在本地服务器,从而兼顾安全合规与加速性能。IPv6加速则基于双栈节点能力,支持IPv4/IPv6协议自适应转换,无需对源站进行大规模改造,并可结合EdgeRoutine边缘代码能力,对未完成升级的外链进行改写与加速,解决IPv6改造过程中的“天窗”问题。
HTTPS加速
支持HTTPS双证书加速方案
HTTPS加速服务,传统方式是客户提供证书用作加速服务。全平台部署一套证书。通过加密传输和策略部署的方式,能够解决私钥传输过程的安全问题。但无法从根本上解决,多节点部署单一证书所带来的多点故障的潜在风险。若节点与源站任意一方出现私钥泄漏风险,导致证书需要吊销与重新颁发,在此期间整个平台的安全风险是十分巨大且无法避免。
HTTPS双证书加速方案,平台所部署的证书与源站所持有的证书不同。两份证书相互备份,相互验证。既可以解决因私钥任意一方泄漏带来的风险空白期,又可以加强源站与CDN节点之间的安全性。
所以在一个具有两级节点的CDN分发架构中,从Client到L1节点再到L2,再回源到源站,一共具有三段TCP连接,每一段都支持了HTTPS。在这中间,在第一段Client到L1节点的时候,使用的是客户部署到CDN的证书, L1到L2节点的时候使用的是阿里云的证书,保证了数据加密。回到源站的时候,使用的是源站证书,这样来实现整个链路的HTTPS,充分保证了网站内容的防篡改、防劫持。

支持SNI方案
随着IPv4地址的短缺,为了让多个域名复用一个IP地址,在HTTP服务器上引入了虚拟主机的概念。服务器可以根据客户端请求中不同的主机名,将请求分发给不同的虚拟主机来处理。但是,对于含有多个虚拟主机的的HTTPS服务器而言,在SSL握手建立之前,由于服务器无法知道客户端请求的是哪个主机,也就无法将请求交给对应的虚拟主机。然而,要完成SSL握手,又必须读取虚拟主机中配置的证书信息。
SNI(Server Name Indication)就是用来解决这个矛盾问题的。SNI要求客户端在与服务器握手时就携带访问域名的主机名信息。这样,服务器就知道需要用哪个虚拟主机的证书与客户端握手并建立TSL连接。SNI最早在2004年被提出,目前主流的浏览器、服务器和测试工具都已支持SNI。
SNI技术原理
在TLSv1.2中,SNI开始被支持,具体而言,SNI就是在SSL握手信息中增加了访问目标的主机名信息。比如访问“www.taobao.com”域名的握手信息中就存在“www.taobao.com”的主机名信息。

目前阿里云CDN默认未开启SNI的转发功能,如客户源站开启了SNI的域名情况,阿里云后台技术可做调整,为客户的域名开启SNI转发功能。
HTTPS keyless方案
对于一些大型企业或者单位来说,不论是政策限制还是数据安全性考虑,把企业业务搬上云端还是加入第三方CDN服务时,都不希望把安全证书的私钥暴露给第三方,阿里云针对此种情况,为了让客户能享受到CDN的优势和性能提升,阿里云CDN已经支持无私钥方案,即客户的私钥文件仍然保留在客户服务器上,客户只需要部署公钥证书到CDN,便能解决客户的后顾之忧。
在客户端和CDN边缘节点进行SSL握手过程,CDN边缘节点需要适用私钥进行解密或者签名时,CDN会向私钥服务器(keyserver)发送待解密或者待签名数据,keyserver利用私钥进行解密或者签名后将其结果返回给CDN,之后CDN和客户端继续完成接下来的握手过程。
架构图

- 阿里云提供KeyServer 软件安装包,部署在客户的服务器上。
- 客户端发送https请求
- CDN向KeyServer发送待解密或者待签名数据
- KeyServer响应密钥或者签名数据给CDN
- CDN完成SSL握手后回源(请求数据未命中)
- 源站响应
方案优势
- 公钥和私钥分离,用户不用将私钥给第三方,减少私钥泄露风险。
- 配置session cache或者session ticket,提高session复用率,提供访问速度,减少KeyServer压力
- 可在KeyServer中安装SSL加速卡,硬件加速,提高性能
- 部署阿里云-LURK服务器集群方案
IPv6协议加速
阿里云CDN双栈节点技术实现
阿里云通过CDN侧的双栈技术实现对IPv4/IPv6的支持,这样源站无需改变做任何改变,就可以支持only ipv6用户的访问。双栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,该台设备既能和IPv4网络通信,又能和IPv6网络通信。由于IPv6和IPv4是功能相近的网络层协议,两者都基于相同的物理平台,而且加载于其上的传输层协议TCP和UDP也基本没有区别,因此,支持双栈的节点既能与支持IPv4协议的节点通信,又能与支持IPv6协议的节点通信。
短期来看,IPv6转换服务会是一个经济适用的过渡方案,但长期看,无缝支持IPv4/IPv6双栈将是终极解决方案。基于此,CDN节点完全支持IPv4/IPv6双栈技术,从底层有效解决IPv4、IPv6混布的问题。IPv4/IPv6双栈全面支持TCP、UDP、GRE、ICMP等各种报文类型。通过自动识别报文版本号、报文类型,提取报文五元组等关键信息实现报文自动转发。
针对IPV6客户端或IPV6源站,阿里云提供IPV6与IPV4双栈自适应转换方法,在无需源站提供额外支持的情况下,保证用户不论IPV4或IPV6方式的访问都能正常访问。阿里云的双栈方案支持网络地址转换-协议转换IPv6到IPv4转换,允许IPv6-only设备与IPv4-only设备访问网站,支持将防护网站域名解析到云防护地址,不需要对原网站服务器进行IPV6配置。
在源站具有V4/V6双栈的情况下,阿里云CDN支持根据要求指定协议回源策略,如针对如下访问路径,阿里云
- ipv6客户端----(ipv6/ipv4)CDN双栈----(ipv6/ipv4)WAF双栈----ipv6(源站)
- ipv6客户端----(ipv6/ipv4)CDN双栈----(ipv6/ipv4)WAF双栈----ipv4(源站)
CDN在配置上是以CNAME的形式提供给客户的:

因此CDN的IPv6化改造就是需要阿里云的这个CNAME能够正常解析出IPv6地址。开通成功并生效的结果类似下图:

解决IPv6“天窗”问题
当网页包含其它网站内容的链接(外链),即使采取双栈技术路线,全面升级网络和修改程序,但被引用的其它网站未升级,IPv6用户访问该网站时会出现响应缓慢,部分内容无法显示,部分功能无法使用等情况。该问题被称为“天窗”问题。 换言之,就是“天窗”问题是升级改造IPv6网络过程中必然会遇到的问题。网站与网站间会互相引用内容、链接,或是网站存在多个栏目,所有网站或是栏目不可能在短时间内全部升级,单方面升级改造就避免不了会出现“天窗”问题。
针对天窗问题,阿里云独家提供边缘Serverless产品—EdgeRoutine方案,通过在阿里云边缘节点运行代码的需求,提供轻量级可编程环境,利用阿里云CDN的2500+全球边缘节点,实现自动部署、就近接入的可编程CDN和Serverless服务,在边缘节点进行外链地址改写,并对外链提供IPv6加速,解决IPv6天窗问题。
