一种高可用的安全无私钥的CDN支持HTTPS的系统及方法与流程

文档序号:17818136发布日期:2019-06-05 21:59阅读:330来源:国知局
一种高可用的安全无私钥的CDN支持HTTPS的系统及方法与流程

本发明涉及互联网cdn领域,尤其是涉及一种高可用的安全无私钥的cdn支持https的系统及方法。



背景技术:

cdn(contentdeliverynetwork,内容分发网络)通过将资源放置到离客户端更近的互联网节点中,使得客户端访问资源时速度更快,目前已经被广泛应用于互联网领域。对于https类型的网站,通常需要将网站的私钥部署到cdn的节点中。cdn节点在接收到客户端的https访问请求后,先进行tls(transportlayersecurity,安全传输层协议)握手,建立tls连接,然后进行后续处理。

目前,tls握手具体过程分为两种,rsa类型和dh类型。

rsa类型过程如下:

1客户端发送clientrandom,支持的加密套件列表

2服务端发送serverrandom,公钥,本次会话使用的加密套件

3客户端发送经过公钥加密的premaster

4服务端使用私钥将加密的premaster解密,获得premaster,然后根据clientrandom、serverrandom、premaster生成sessionkey

5客户端根据clientrandom、serverrandom、premaster生成sessionkey

6客户端和服务器使用sessionkey作为后续加密的密钥

dh类型过程如下:

1客户端发送clientrandom,支持的加密套件列表

2服务端发送serverrandom,公钥,本次会话使用的加密套件;生成serverdhparam,然后使用私钥对(clientrandom、serverrandom、serverdhparam)进行dh签名

3服务端发送serverdhparam,以及dh签名

4客户端验证dh签名是否正确;正确则发送clientdhparam,否则结束

5客户端根据serverdhparam和clientdhparam生成premaster,然后根据clientrandom、serverrandom、premaster生成sessionkey

6服务端根据serverdhparam和clientdhparam生成premaster,然后根据clientrandom、serverrandom、premaster生成sessionkey

7客户端和服务器使用sessionkey作为后续加密的密钥

无论是rsa类型和dh类型,它们均将网站私钥部署在cdn节点,如此,具有以下缺点:

1,cdn被攻击时,可能会被盗窃私钥

2,cdn同时管理多个网站的私钥,存在私钥混用风险

某些对安全极其看重的行业,比如金融业,不能将私钥部署在外部环境中,因此也无法享受cdn带来的好处。

因此,如何设计出一种能够在cdn不部署私钥的情况下进行https加速,并能够根据设备和网络健康状况自动调整的方法或系统,便成为了目前亟待解决的问题。



技术实现要素:

针对现有技术中存在的上述缺陷,本发明的目的是提供一种高可用的安全无私钥的cdn支持https的方法及系统,以解决原有的cdn支持https网站时,均将网站私钥部署在cdn节点带来的不安全的问题。

为解决上述技术问题,本发明采用的技术方案如下:

一方面,本发明提供了一种高可用的安全无私钥的cdn支持https的系统,所述系统包括:tls握手代理装置,查询代理装置,私钥管理装置,其中,所述tls握手代理装置连接所述查询代理装置;所述查询代理装置分别连接所述tls握手代理装置和私钥管理装置;所述查询代理装置分别连接所述tls握手代理装置和私钥管理装置。此处的连接,既可以是通过诸如导线、信号线等物理连接方式,也可以指无线连接方式。

所述tls握手代理装置用于在客户端向cdn边缘节点发起https连接请求时,识别握手类型,并根据不同的握手类型向所述查询代理装置发起解密或签名请求。

所述查询代理装置,用于接收所述tls握手代理装置发送的请求并生成查询请求队列,并从所述私钥管理装置列表中选择位于列表头的私钥管理装置,向其发起请求。

所述私钥管理装置,可以有任意多个,优选都是分布在靠近cdn边缘节点的地点,多个私钥管理装置同时提供服务,具有高可用性。

进一步地,所述私钥管理装置,用于收到所述查询代理装置的请求后,生成私钥请求队列,并将响应结果返回给所述查询代理装置,所述查询代理装置在查询到响应结果后,完成tls握手。

进一步地,所述查询代理装置包括:查询请求队列单元、查询响应队列单元、查询引擎、私钥管理装置列表单元及私钥管理装置列表健康检测单元,其中,

所述查询请求队列单元,连接所述tls握手代理装置及查询引擎,用于接收并保存从tls握手代理装置发送的待处理的查询请求;

所述查询响应队列单元,连接所述私钥管理装置及查询引擎,用于接收从所述私钥管理装置返回的结果,并保存结果至响应队列,等待tls握手代理装置的问询;

所述查询引擎,连接所述查询请求队列单元及私钥管理装置,用于取走请求队列单元队头的请求,并从私钥管理装置列表中选择靠前的私钥管理装置向其发起请求,同时,所述查询引擎接收该私钥管理装置返回的结果,并将该结果放入所述查询响应队列单元的尾部;

所述私钥管理装置列表单元,用于对私钥管理装置按照健康度高低排序;

所述私钥管理装置列表健康检测单元,用于定期检测各私钥管理装置的健康度。

进一步地,所述健康度包括:响应时间、当前负载量。

进一步地,所述查询代理装置由主查询模块和备用查询模块组成,其中,所述主查询模块主要提供查询请求服务并维护自身的私钥管理装置列表,所述被查询模块则只维护自身的私钥管理装置列表;所述主查询模块失效时,自动切换至所述备用查询模块提供查询请求服务。

进一步地,所述私钥管理装置设置有多个,均靠近cdn边缘节点,且由私钥拥有者完全控制,各个所述私钥管理装置均连接所述查询代理装置,所述私钥管理装置包括:网络模块、私钥存储单元、私钥请求队列单元、计算引擎和私钥响应队列单元,其中,所述网络模块接收到查询代理装置的请求后,将请求加入到私钥请求队列单元,同时,计算引擎从所述私钥请求队列单元中依序取出请求,解析请求,从私钥存储单元中取出相关私钥进行计算,根据请求类型,对请求中的数据进行解密/签名,形成响应,然后将响应加入到私钥响应队列单元,所述网络模块再从所述响应队列单元中取出响应,发送给查询代理装置。

进一步地,客户端向cdn边缘节点发起https连接请求具体为客户端与cdn边缘节点中某个tls卸载服务器发起tls握手连接请求,其中,所述tls卸载服务器上运行openssl,openssl中嵌入了所述tls握手代理装置。

另一方面,本发明还提供了一种高可用的安全无私钥的cdn支持https的方法,所述方法包括如下步骤:

客户端向cdn边缘节点发起tls握手连接请求,;

tls握手代理装置识别握手类型,并根据不同的握手类型向查询代理装置发起解密或签名请求;

接收tls握手连接请求并生成查询队列模式,并从私钥管理装置列表中选择位于列表头的私钥管理装置,向其发起请求;

位于列表头的私钥管理装置收到查询代理装置的请求后,根据请求中的私钥签名找到私钥,生成私钥请求队列,并将响应结果返回给查询代理装置,所述查询代理装置在查询到响应结果后,完成tls握手。

进一步地,所述查询代理装置接收tls握手连接请求并生成查询队列模式的方法具体包括:

将接收的连接请求进行保存添加到查询请求队列中;

对返回的查询结果保存添加到查询响应队列中;

所述私钥管理装置生成私钥队列模式的方法具体包括:

将接收的查询请求加入到私钥请求队列,等待计算引擎的的调取;

将计算引擎返回的响应结果加入到私钥响应队列,等待网络模块的调取。

进一步地,选取位于列表头的私钥管理装置的方法包括:

通过私钥管理装置列表健康检测单元检查私钥管理装置列表中的各个私钥管理装置的健康度;

由私钥管理装置根据健康度大小由高到低进行排练;

查询代理装置通过查询引擎优先选择健康度最高的私钥管理装置作为其发送请求的对象。

进一步地,所述查询代理装置设置有主查询模块和备用查询模块,其中,所述主查询模块主要提供查询请求服务并维护自身的私钥管理装置列表,所述被查询模块则只维护自身的私钥管理装置列表;所述主查询模块失效时,自动切换至所述备用查询模块提供查询请求服务。

进一步地,客户端向cdn边缘节点发起https连接请求。具体为客户端与cdn边缘节点中某个tls卸载服务器发起tls握手连接请求,其中,所述tls卸载服务器上运行openssl,openssl中嵌入了所述tls握手代理装置。

与现有技术相比,本发明所述的一种高可用的安全无私钥的cdn支持https的方法及系统,达到了如下技术效果:

1、cdn不保存网站私钥,而是在需要使用时,将数据发送给网站的私钥管理装置,私钥管理装置处理后将数据返回给cdn,cdn再进行后续处理。

2、查询代理的请求队列和响应队列设置,可以缓存数据,避免握手请求产生速度和私钥管理装置响应速度不匹配造成请求或者响应丢失。

3、查询代理装置有主备两台,主查询代理宕机后立即启用备查询代理装置,具备高可用性。

4、私钥管理装置有多个,能够同时提供服务,本发明中能够根据私钥管理装置的负载和网络状况自动选择最佳的私钥管理装置来处理请求,具备高可用性。

附图说明

图1为本发明实施例所述的无私钥的cdn加速https网站的系统架构图。

图2为本发明实施例中的tls握手代理装置的工作流程示意图。

图3为本发明实施例中的查询代理装置的架构示意图。

图4为本发明实施例中的查询代理装置的工作流程示意图。

图5为本发明实施例中的私钥管理装置的架构示意图。

图6为本发明实施例中的私钥管理装置的工作流程示意图。

具体实施方式

以下结合附图对本发明作进一步详细说明,但不作为对本发明的限定。

现有技术中,在cdn支持https网站的实现方法中,cdn节点通常部署有私钥,但将网站私钥部署在cdn节点,存在私钥被盗窃或者混用的风险,尤其是金融、银行等安全系数较高的行业,不能将私钥部署在外部环境中,但如此也无法享受cdn带来的好处。

本发明的目的主要在于,提供一种高可用的安全无私钥的cdn支持https的方法及系统,能够在cdn不部署私钥的情况下支持https,并能够根据设备和网络健康状况自动调整。

参照图1所示,本发明实施例所公开的一种高可用的安全无私钥的cdn支持https的系统,包括:tls握手代理装置,查询代理装置,私钥管理装置。

所述tls握手代理装置,连接所述查询代理装置,用于在客户端通过客户端向cdn边缘节点发起https连接请求时,识别握手类型,并根据不同的握手类型向所述查询代理装置发起解密或签名请求;

所述查询代理装置,分别连接所述tls握手代理装置和私钥管理装置,用于接收所述tls握手代理装置发送的请求并生成查询请求队列,并从所述私钥管理装置列表中选择位于列表头的私钥管理装置,向其发起请求;

所述私钥管理装置,可以有任意多个(一般都分布在靠近cdn边缘节点的地点),连接所述查询代理装置,所述私钥管理装置收到查询代理装置的请求后,生成私钥请求队列,并将响应结果返回给所述查询代理装置,所述查询代理装置在查询到响应结果后,完成tls握手。

本发明利用cdn加速https网站同时,又无需将私钥部署在cdn上,保持了对私钥的绝对私有控制,提高了安全性。

具体来说,参照图2所示,图2为本发明实施例中tls握手代理装置的工作流程图,所述客户端向cdn边缘节点发起https连接请求的具体过程为:客户端发起https连接,与cdn边缘节点的某服务器开始tls握手,更具体来说,客户端是与cdn边缘节点中某个tls卸载服务器发起tls握手连接请求,其中,所述tls卸载服务器上运行openssl,openssl中嵌入了所述tls握手代理装置。tls握手代理装置获得握手需要的私钥处理的信息,以及私钥签名,形成私钥处理请求,并将该私钥处理请求发送到查询代理装置。而各个所述私钥管理装置则优选分布在靠近cdn边缘节点的地点,以提高响应速率。

在此过程中,tls握手代理装置需要识别握手类型,比如,当为rsa类型握手:获取客户端发送的加密premaster数据,以及所需私钥的签名,向查询代理装置发起解密请求;当为dh类型握手时:获取客户端发送的clientrandom,服务器的serverrandom,serverdhparameter,以及所需私钥的签名,向查询代理装置发起签名请求。

所述握手代理模块定期向查询代理装置查询请求结果,是否有响应,超过一定时间后如果还是没有结果,那么握手失败,与客户端断开连接。如果查询有响应,则接收返回的响应结果,使用私钥处理结果,完成tls握手,进行后续的https相关处理。

参照图3、图4所示,图3为本发明实施例中查询代理装置的架构示意图,图4为本发明实施例中的查询代理装置的工作流程图。

在本发明实施例中,所示查询代理装置包含查询请求队列单元、查询响应队列单元、查询引擎、私钥管理装置列表单元及私钥管理装置列表健康检测单元,其中,

所述查询请求队列单元,连接所述tls握手代理装置及查询引擎,用于接收并保存从tls握手代理装置发送的待处理的查询请求,按照请求的先后顺序进行排列,依次向私钥管理装置发送请求,此处的请求包括解密/签名请求;

所述查询响应队列单元,连接所述私钥管理装置及查询引擎,用于接收从所述私钥管理装置返回的结果,并保存结果至响应队列,等待tls握手代理装置的问询;

所述查询引擎,连接所述查询请求队列单元及私钥管理装置,用于取走查询请求队列单元队头的请求,并从私钥管理装置列表中选择靠前的私钥管理装置向其发起请求,同时,所述查询引擎接收所选择的该私钥管理装置返回的结果,并将该结果放入所述查询响应队列单元的尾部;

所述私钥管理装置列表单元,用于对私钥管理装置按照健康度高低排序;

所述私钥管理装置列表健康检测单元,用于定期检测各私钥管理装置的健康度,其中,所述健康度包括:响应时间、当前负载量,比如响应时间越短、当前负载量越小的将被视为健康度越高的,排列在列表靠前。

本发明的查询代理装置通过请求队列和响应队列的设置,可以缓存数据,避免握手请求产生速度和私钥管理装置响应速度不匹配造成请求或者响应丢失。此外,通过私钥管理装置列表健康检测单元及私钥管理装置列表单元,智能化的选取健康度最高的私钥管理装置作为结果请求处理装置,也优化了系统,增强了系统的处理进程。

作为本发明一个优选的实施方式,所述查询代理装置由主查询模块和备用查询模块组成,其中,在正常情况下,所述主查询模块主要提供查询请求服务并维护自身的私钥管理装置列表,所述被查询模块则只维护自身的私钥管理装置列表;只有当所述主查询模块失效时,自动切换至所述备用查询模块工作,此时,tls代理模块将所有请求发送给备用查询代理装置,并从其获取响应,提高系统的可用性。

所述查询代理装置主要判断请求队列是否为空,及私钥管理装置是否发回了响应。当请求队列不为空,则从请求队列的列头取一个请求,从私钥管理装置的列表头取一个私钥管理装置,并向其发送请求,直至下一次循环,继续判断请求队列是否为空;当私钥管理装置发回了响应后,查询引擎将该响应加入到响应队列的尾部,并开始下一次循环;tls握手查询代理装置获得结果,立即完成握手请求。

参照图5、图6所示,所述私钥管理装置包括:网络模块、私钥存储单元、私钥请求队列单元、计算引擎和私钥响应队列单元。所述网络模块接收到查询代理装置的请求后,将请求加入到私钥请求队列单元排序,同时,计算引擎从私钥请求队列中依序取出请求,解析请求,从私钥存储单元中取出相关私钥进行计算,根据请求类型,对请求中的数据进行解密/签名,形成响应,然后将响应加入到私钥响应队列单元排序,所述网络模块再从所述响应队列中取出响应,发送给查询代理装置,所述网络模块主要负责和查询代理装置之间的通信。查询引擎接收到响应结果,将结果放入到查询响应队列单元。

其中,所述私钥管理装置,可以有任意多个,部署在不同的地域,各私钥管理装置优选都是分布在靠近cdn边缘节点的地点(也即优选部署在cdn边缘节点附近位置),这样交互速率更快。此外,多个私钥管理装置可同时为不同的查询请求提供服务,具有高可用性。举例来说,存在cdn节点1、cdn节点2、cdn节点3,以及50个私钥管理装置,这50个私钥管理装置中,部分私钥管理装置为cdn节点1中请求服务,部分私钥管理装置为cdn节点2中的请求服务,部分私钥管理装置为cdn节点3中的请求服务。而在为各cdn节点中的请求服务的多个私钥管理装置中,选择健康度最高的私钥管理装置优先作为提供服务的对象。

本发明实施例中的私钥管理装置列表中能够根据私钥管理装置的负载和网络状况自动选择最佳的私钥管理装置来处理请求,选择最佳线路,减少响应时间,提高效率。

与上述系统一一对应地,还提供一种高可用的安全无私钥的cdn支持https的方法。所述方法包括:

客户端向cdn边缘节点发起tls握手连接请求,;

tls握手代理装置识别握手类型,并根据不同的握手类型向查询代理装置发起解密或签名请求;

接收tls握手连接请求并生成查询队列模式,并从私钥管理装置列表中选择位于列表头的私钥管理单元,向其发起请求;

位于列表头的私钥管理装置收到查询代理装置的请求后,根据请求中的私钥签名找到私钥,然后根据请求类型,对请求中的数据进行解密/签名,并将结果返回给查询代理装置,所述查询代理装置将收到的结果放入队列尾部,并在收到所述tls握手连接请求时,将该结果返回给tls握手代理装置。其中,所述私钥管理装置可以有任意多个,优选都是分布在靠近cdn边缘节点的地点,

其中,生成查询队列模式具体包括:将接收的连接请求进行保存添加到请求队列中;对返回的查询结果保存添加到响应队列中。

选取位于列表头的私钥管理装置的方法具体包括:

通过私钥管理装置列表健康检测单元检查各个私钥管理装置的健康度;

由私钥管理装置列表单元根据健康度大小由高到低进行排练;

查询代理装置通过查询引擎优先选择健康度最高的私钥管理装置作为其发送请求的对象。

所述查询代理装置设置有主查询模块和备用查询模块,其中,所述主查询模块主要提供查询请求服务并维护自身的私钥管理装置列表,所述被查询模块则只维护自身的私钥管理装置列表;所述主查询模块失效时,自动切换至所述备用查询模块提供查询请求服务。

上述方法与前述实施例中的系统所采用的技术方案一一对应,其具有相同的技术效果,故在此不作赘述。

下面来列举一详细实施例来介绍本发明方法的具体工作过程。

步骤s1、客户端请求与cdn边缘节点中某个tls卸载服务器建立tls连接,开始tls握手,

rsa类型握手时:客户端发给服务器clientrandom,以及使用公钥加密的premaster;

dh类型握手时:客户端发送给服务器clientrandom。

步骤s2、tls握手代理装置获得握手中需要私钥处理的信息,以及私钥的签名,具体包括:

rsa类型握手时:客户端使用公钥加密的premaster数据;

dh类型握手时:客户端发送的clientrandom,服务器的serverrandom,serverdhparameter。

步骤s3、形成私钥处理请求(需要私钥处理的信息+私钥的签名),将其发送给查询代理装置,然后等待私钥处理响应。

等待私钥处理响应的过程是:

3.1、询问查询代理是否有响应;

3.2、如果有,结束等待,获得响应,使用此响应结果完成tls握手,并进行后续https相关处理;

3.3、如果没有,等待10毫秒;

3.4、如果已经距离第一次等待超过了1秒钟,则认为超时,握手失败,

与客户端断开连接;

3.5、如果没有超过1秒钟,转3.1继续查询。

步骤s4、查询代理装置的查询引擎从请求队列头取出一个请求,具体方法是:

4.1判断请求队列长度

4.2如果长度为0,等待0.1毫秒,转4.1

4.3如果长度不为0,则取出队列头的请求

步骤s5、查询代理装置的查询引擎从私钥管理装置列表中取出第一个私钥管理装置,并向这个私钥管理装置发送4.3中获得的请求,并将对应私钥管理装置当前任务量加1。

其中,主/备查询模块的私钥管理装置队列维护方法为:

向每个私钥管理装置发送ping请求,记录响应返回时间;然后根据响应时间和当前任务量排序,规则为:

先根据响应时间排序,越小的越靠前;

然后根据任务量,对响应时间相同的排序,任务量越小越靠前。

其中,主查询模块和备用查询模块之间采用keepalived进行可用性保证,同一时间只有一台查询代理装置给tls握手代理装置提供服务,tls握手代理装置不感知主备之间的切换。

步骤s6、私钥管理装置的网络模块收到一个请求。

步骤s7、私钥管理装置的网络模块将请求加入到请求队列队尾。

步骤s8、私钥管理装置的计算引擎从请求队列头取出一个请求,解析此请求,获得需要私钥处理的信息+私钥的签名。

步骤s9、私钥管理装置的计算引擎从私钥存储中根据私钥的签名查询到私钥,然后用此私钥处理待处理的信息,形成响应。

步骤s10、私钥管理装置的计算引擎将响应加入到响应队列。

步骤s11、私钥管理装置的网络模块取出响应队列中的响应,发送给查询代理装置。

步骤s12、查询代理装置的查询引擎收到此响应,将响应加入到响应队列;将对应私钥处理模块的当前任务量减1。

步骤s13、查询代理装置收到tls握手代理装置的询问,将响应从响应队列中取出,发送给tls握手代理装置。

完成握手后,客户端与cdn之间就可以进行https通信,cdn可将通信内容解密并进行后续加速处理。

本发明所述的一种高可用的安全无私钥的cdn支持https的方法及系统,利用cdn支持https网站同时,又无需将私钥部署在cdn上,保持了对私钥的绝对私有控制,提高了安全性。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1