一种私钥安全存储和分发的方法及装置
技术领域
本发明涉及云计算处理领域,尤其涉及一种私钥安全存储和分发的方法及装置。
背景技术
在内容分发网络(Content Delivery Network,简称CDN)场景下使用以安全为目标的HTTP通道(Hyper Text Transfer Protocol over Secure Socket Layer,HTTPS)面临的最大挑战之一就是私钥的安全性问题。CDN的边缘节点承担着和用户端进行安全套接层(Secure Sockets Layer,简称SSL)握手的任务,因此CDN边缘节点需要有使用私钥的能力,最常见的方式是将私钥部署到边缘节点的缓存服务器上,这样一来,CDN边缘节点数量众多的情况下私钥的拷贝数量会十分庞大,从安全的角度来看这无疑增大了私钥泄露的风险。
现有技术中解决此问题的方法有两种,第一种,客户自己保留私钥并以类似于无密钥(keyless)的方法授权CDN厂商使用其私钥,但不能读取私钥内容。第二种,私钥仍然由CDN厂商保管,但CDN厂商在边缘节点的缓存服务器上增加特定的安全芯片,将私钥存储在芯片中,借助硬件手段来保证私钥安全。
对于上述两种方法,均存在不同程度的缺点,具体来说:对于第一种,keyless服务器与CDN边缘节点距离较远时,远程的keyless方案会增加SSL握手的延迟,并且对于用户来说,需要额外维护keyless服务器,从而增加了用户的运维成本。对于方法二,由于边缘节点缓存服务器数量巨大,增加硬件安全芯片会提高厂商的成本。此外,数量巨大的边缘节点缓存服务器也考验着CDN厂商安全管理的能力,如果缓存服务器本身存在漏洞,则即使增加安全芯片也存在私钥泄露的可能。
发明内容
为了解决上述技术问题,本发明提供了一种私钥安全存储和分发的方法及装置。
本发明提供了一种私钥安全处理方法,包括:
私钥安全存储中心接收目标域名和与目标域名对应的私钥,将私钥进行加密,存储所述目标域名和与所述目标域名对应的加密私钥;
所述私钥安全存储中心从边缘节点接收私钥获取请求,从所述私钥获取请求中解析出目标域名,查询并提取与所述目标域名对应的加密私钥,对所述加密私钥进行解密后获得私钥,将此私钥发送至所述边缘节点。
上述私钥安全处理方法还具有以下特点:
所述私钥安全存储中心包括API模块、处理模块、存储设备和加解密设备;
所述方法包括:
所述API模块接收目标域名和与目标域名对应的私钥,将目标域名和与目标域名对应的私钥发送至所述处理模块,所述处理模块将所述私钥发送至加解密设备进行加密,从加解密设备接收到加密私钥后将所述目标域名和与所述目标域名对应的加密私钥存储于所述存储设备;
所述API模块从边缘节点接收到携带目标域名的私钥获取请求后,将所述目标域名发送至所述处理模块,所述处理模块从所述存储设备查询并提取与所述目标域名对应的加密私钥,将此加密私钥发送至所述加解密设备进行解密,从加解密设备接收到私钥后,将此私钥发送至所述API模块,所述API模块将此私钥发送至所述边缘节点。
上述私钥安全处理方法还具有以下特点:
所述方法还包括:所述边缘节点的第一处理器接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,使用此私钥与所述用户端进行SSL握手处理,如果否,向所述私钥安全存储中心发送携带所述目标域名的私钥获取请求,从所述私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备中。
上述私钥安全处理方法还具有以下特点:
所述方法还包括:所述边缘节点的第一处理器接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果否,向第二处理器请求此目标域名对应的私钥,如果从第二处理器获知第二处理器的缓存设备中包含此目标域名对应的私钥,从第二处理器获取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果从第二处理器获知第二处理器的缓存设备中不包含此目标域名对应的私钥,向所述私钥安全存储中心发送携带所述目标域名的私钥获取请求,从所述私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备,将此目标域名和私钥发送至第二处理器,第二处理器接将收到的目标域名和私钥存储于第二处理器的缓存设备中。
上述私钥安全处理方法还具有以下特点:
所述方法还包括:所述边缘节点的第一处理器接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果否,向第二处理器发送获取此目标域名对应的私钥的请求;
所述第二处理器从所述第一处理器接收到获取私钥的请求后,确定目标域名,判断此第二处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并发送至所述第一处理器,如果否,从所述私钥安全存储中心获取此目标域名对应的私钥,将此私钥发送至所述第一处理器并将此私钥存储于此第二处理器的缓存设备;
所述第一处理器从所述第二处理器获取此私钥并使用此私钥与所述用户端进行SSL握手处理,将此目标域名和私钥保存在此第一处理器的缓存设备。
上述私钥安全处理方法还具有以下特点:
所述私钥安全存储中心接收目标域名和与目标域名对应的私钥,将私钥进行加密包括:从用户端接收目标域名和与目标域名对应的私钥,判断此用户端是所述私钥安全存储中心的授权方时才将私钥进行加密;
所述私钥安全存储中心从边缘节点接收到携带目标域名的私钥获取请求,查询并提取与所述目标域名对应的加密私钥包括:所述私钥安全存储中心从边缘节点接收到私钥获取请求,判断此边缘节点是所述私钥安全存储中心的授权方时才从所述私钥获取请求中解析出目标域名;
其中,判断此边缘节点是否为所述私钥安全存储中心的授权方时采用地址白名单和/或用户端证书验证的方式进行判断。
本发明还提供了一种私钥安全处理装置,包括应用于私钥安全存储中心的第一装置;
所述第一装置,用于接收目标域名和与目标域名对应的私钥,将私钥进行加密,存储所述目标域名和与所述目标域名对应的加密私钥;还用于从边缘节点接收私钥获取请求,从所述私钥获取请求中解析出目标域名,查询并提取与所述目标域名对应的加密私钥,对所述加密私钥进行解密后获得私钥,将此私钥发送至所述边缘节点。
上述私钥安全处理装置方法还具有以下特点:
所述第一装置包括:API模块、处理模块、存储设备和加解密设备;
所述API模块,用于接收目标域名和与目标域名对应的私钥,将目标域名和与目标域名对应的私钥发送至所述处理模块;还用于从边缘节点接收到携带目标域名的私钥获取请求后,从所述私钥获取请求中解析出目标域名,将所述目标域名发送至所述处理模块;还用于从所述处理模块收到私钥后,将此私钥发送至所述边缘节点;
所述处理模块,用于将从所述API模块接收到的私钥发送至加解密设备进行加密,从加解密设备接收到加密私钥后将所述目标域名和与所述域名对应的加密私钥存储于所述存储设备;还用于从所述API模块接收目标域名,从所述存储设备查询并提取与所述目标域名对应的加密私钥,将此加密私钥发送至所述加解密设备进行解密,从加解密设备接收到私钥后,将此私钥发送至所述API模块。
上述私钥安全处理装置方法还具有以下特点:
还包括应用于边缘节点的第二装置,其特征在于,所述第二装置包括:至少一个第一处理器、第一处理器的缓存设备;
所述第一处理器,用于接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,使用此私钥与所述用户端进行SSL握手处理,如果否,向所述私钥安全存储中心发送携带所述目标域名的私钥获取请求,从所述私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备中。
上述私钥安全处理装置方法还具有以下特点:
还包括应用于边缘节点第二装置,所述第二装置包括:第一处理器、第一处理器的缓存设备、第二处理器、第二处理器的缓存设备;其中,第一处理器的个数大于或等于1;
所述第一处理器,用于接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果否,向第二处理器请求此目标域名对应的私钥,如果从第二处理器获知第二处理器的缓存设备中包含此目标域名对应的私钥,从第二处理器获取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果从第二处理器获知第二处理器的缓存设备中不包含此目标域名对应的私钥,向所述私钥安全存储中心发送携带所述目标域名的私钥获取请求,从所述私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备,将此目标域名和私钥发送至第二处理器;
所述第二处理器,用于接收到第一处理器请求目标域名对应的私钥的信息后,查询第二处理器的缓存设备中是否保存有此目标域名对应的私钥,并向所述第一处理器返回查询结果;还用于从第一处理器收到目标域名和私钥后,将接收到的目标域名和私钥存储于第二处理器的缓存设备中。
上述私钥安全处理装置方法还具有以下特点:
还包括应用于边缘节点第二装置,所述第二装置包括:第一处理器、第一处理器的缓存设备、第二处理器、第二处理器的缓存设备;其中,第一处理器的个数大于或等于1;
所述第一处理器,用于接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果否,向第二处理器发送获取此目标域名对应的私钥的请求;还用于从所述第二处理器获取此私钥并使用此私钥与所述用户端进行SSL握手处理,将此目标域名和私钥保存在此第一处理器的缓存设备;
所述第二处理器,用于从所述第一处理器接收到获取私钥的请求后,确定目标域名,判断此第二处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并发送至所述第一处理器,如果否,从所述私钥安全存储中心获取此目标域名对应的私钥,将此私钥发送至所述第一处理器并将此私钥存储于此第二处理器的缓存设备。
上述私钥安全处理装置方法还具有以下特点:
所述第一装置,还用于从用户端接收目标域名和与目标域名对应的私钥,判断此用户端是所述私钥安全存储中心的授权方时才将私钥进行加密;还用于边缘节点接收到私钥获取请求,判断此边缘节点是所述私钥安全存储中心的授权方时才从所述私钥获取请求中解析出目标域名;还用于在判断此边缘节点是否为所述私钥安全存储中心的授权方时采用地址白名单和/或用户端证书验证的方式进行判断。
本发明将所有私钥均加密后集中统一存储于私钥安全存储中心,不存在将私钥明文直接存储在介质上的情况,可以有效保护私钥的安全性,并且无需在边缘节点上部署专用硬件,节省成本。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是实施例中私钥安全处理方法的流程图;
图2是实施例中私钥安全处理装置的应用于私钥安全存储中心的第一装置的结构图;
图3是实施例中私钥安全处理装置的应用于边缘节点的第二装置的一种结构图;
图4是实施例中私钥安全处理装置的应用于边缘节点的第二装置的另一种结构图。
具体实施方式
图1是实施例中私钥安全处理方法的流程图,此方法包括:
步骤101,私钥安全存储中心接收目标域名和与目标域名对应的私钥,将私钥进行加密,存储所述目标域名和与所述目标域名对应的加密私钥;
步骤102,私钥安全存储中心从边缘节点接收私钥获取请求,从私钥获取请求中解析出目标域名,查询并提取与目标域名对应的加密私钥,对加密私钥进行解密后获得私钥,将此私钥发送至上述边缘节点。
具体的,私钥安全存储中心包括API模块、处理模块、存储设备和加解密设备。此方法具体包括:
API模块接收目标域名和与目标域名对应的私钥,将目标域名和与目标域名对应的私钥发送至处理模块,处理模块将私钥发送至加解密设备进行加密,从加解密设备接收到加密私钥后将此目标域名和与此目标域名对应的加密私钥存储于存储设备。
API模块从边缘节点接收到携带目标域名的私钥获取请求后,将目标域名发送至处理模块,处理模块从存储设备查询并提取与目标域名对应的加密私钥,将此加密私钥发送至加解密设备进行解密,从加解密设备接收到私钥后,将此私钥发送至API模块,API模块将此私钥发送至边缘节点。
本方法中,边缘节点使用以下方式中的一种进行私钥缓存:
方式一,边缘节点的第一处理器接收到用户端的SSL握手请求,确定SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,使用此私钥与用户端进行SSL握手处理,如果否,向私钥安全存储中心发送携带上述目标域名的私钥获取请求,从私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备中。
方式二,边缘节点的第一处理器接收到用户端的SSL握手请求,确定SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与用户端进行SSL握手处理,如果否,向第二处理器请求此目标域名对应的私钥,如果从第二处理器获知第二处理器的缓存设备中包含此目标域名对应的私钥,从第二处理器获取此私钥并使用此私钥与用户端进行SSL握手处理,如果从第二处理器获知第二处理器的缓存设备中不包含此目标域名对应的私钥,向私钥安全存储中心发送携带目标域名的私钥获取请求,从私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备,将此目标域名和私钥发送至第二处理器,第二处理器接将收到的目标域名和私钥存储于第二处理器的缓存设备中。
方式三,边缘节点的第一处理器接收到用户端的SSL握手请求,确定SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与用户端进行SSL握手处理,如果否,向第二处理器发送获取此目标域名对应的私钥的请求。第二处理器从第一处理器接收到获取私钥的请求后,确定目标域名,判断此第二处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并发送至第一处理器,如果否,从私钥安全存储中心获取此目标域名对应的私钥,将此私钥发送至第一处理器并将此私钥存储于此第二处理器的缓存设备。第一处理器从第二处理器获取此私钥并使用此私钥与用户端进行SSL握手处理,将此目标域名和私钥保存在此第一处理器的缓存设备。
方式一中边缘节点采用一级缓存的架构,方式二和方式三中边缘节点采用双级缓存的架构。方式二和方式三中的第一处理器不直接向私钥安全存储中心请求私钥,而是先向本边缘节点中第二处理器发起请求,当第二处理器的缓存设备已存有相应私钥,可以直接响应该请求,这相当于对该边缘节点内来自于不同级别的处理器的请求进行合并,从而再次减小对私钥安全存储中心的请求次数,对私钥安全存储中心请求次数的减小可以显著的减轻私钥安全存储中心的压力。
步骤101中,私钥安全存储中心接收目标域名和与目标域名对应的私钥,将私钥进行加密包括:从用户端接收目标域名和与目标域名对应的私钥,判断此用户端是私钥安全存储中心的授权方时才将私钥进行加密。
其中,所述用户端是指私钥安全存储中心的用户调用API模块的方式,包括但不限于脚本、网页、用户端程序等。
步骤102中,私钥安全存储中心从边缘节点接收到携带目标域名的私钥获取请求,查询并提取与所述目标域名对应的加密私钥包括:私钥安全存储中心从边缘节点接收到私钥获取请求,判断此边缘节点是私钥安全存储中心的授权方时才从私钥获取请求中解析出目标域名。
步骤101和步骤102中,判断此边缘节点是否为所述私钥安全存储中心的授权方时采用地址白名单和/或用户端证书验证的方式进行判断。
本发明中私钥安全处理装置包括应用于私钥安全存储中心的第一装置,此第一装置用于接收目标域名和与目标域名对应的私钥,将私钥进行加密,存储所述目标域名和与所述目标域名对应的加密私钥;还用于从边缘节点接收私钥获取请求,从所述私钥获取请求中解析出目标域名,查询并提取与所述目标域名对应的加密私钥,对所述加密私钥进行解密后获得私钥,将此私钥发送至所述边缘节点。
第一装置还用于从用户端接收目标域名和与目标域名对应的私钥,判断此用户端是所述私钥安全存储中心的授权方时才将私钥进行加密;还用于边缘节点接收到私钥获取请求,判断此边缘节点是所述私钥安全存储中心的授权方时才从所述私钥获取请求中解析出目标域名;还用于在判断此边缘节点是否为所述私钥安全存储中心的授权方时采用地址白名单和/或用户端证书验证的方式进行判断。
图2是此第一装置的结构图;此第一装置包括:API模块、处理模块、存储设备和加解密设备(包括但不限于加密机)。
API模块用于接收目标域名和与目标域名对应的私钥,将目标域名和与目标域名对应的私钥发送至所述处理模块;还用于从边缘节点接收到携带目标域名的私钥获取请求后,从所述私钥获取请求中解析出目标域名,将目标域名发送至所述处理模块;还用于从处理模块收到私钥后,将此私钥发送至所述边缘节点;
处理模块用于将从所述API模块接收到的私钥发送至加解密设备进行加密,从加解密设备接收到加密私钥后将目标域名和此目标此域名对应的加密私钥存储于存储设备;还用于从API模块接收目标域名,从存储设备查询并提取与此目标域名对应的加密私钥,将此加密私钥发送至所述加解密设备进行解密,从加解密设备接收到私钥后,将此私钥发送至所述API模块。
其中,
API模块还用于从用户端接收目标域名和与目标域名对应的私钥后,判断此用户端是所述私钥安全存储中心的授权方时才将私钥发送至加密设备进行加密;还用于从边缘节点接收到私钥获取请求后,判断此边缘节点是所述私钥安全存储中心的授权方时才从所述私钥获取请求中解析出目标域名;还用于采用地址白名单和/或用户端证书验证的方式判断所述用户端或边缘节点是否为所述私钥安全存储中心的授权方。
私钥安全处理装置还包括应用于边缘节点的第二装置。
如图3所示,对应于上述方式一,第二装置包括:至少一个第一处理器、第一处理器的缓存设备。
第一处理器用于接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,使用此私钥与所述用户端进行SSL握手处理,如果否,向私钥安全存储中心发送携带所述目标域名的私钥获取请求,从私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备中。
如图4所示,对应于上述方式二,第二装置包括:第一处理器、第一处理器的缓存设备、第二处理器、第二处理器的缓存设备;其中,第一处理器的个数大于或等于1。
第一处理器用于接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果否,向第二处理器请求此目标域名对应的私钥,如果从第二处理器获知第二处理器的缓存设备中包含此目标域名对应的私钥,从第二处理器获取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果从第二处理器获知第二处理器的缓存设备中不包含此目标域名对应的私钥,向私钥安全存储中心发送携带所述目标域名的私钥获取请求,从私钥安全存储中心获取到私钥后,将此目标域名和私钥保存在此第一处理器的缓存设备,将此目标域名和私钥发送至第二处理器;
第二处理器用于接收到第一处理器请求目标域名对应的私钥的信息后,查询第二处理器的缓存设备中是否保存有此目标域名对应的私钥,并向所述第一处理器返回查询结果;还用于从第一处理器收到目标域名和私钥后,将接收到的目标域名和私钥存储于第二处理器的缓存设备中。
如图4所示,对应于上述方式三,第二装置包括:第一处理器、第一处理器的缓存设备、第二处理器、第二处理器的缓存设备;其中,第一处理器的个数大于或等于1。
第一处理器用于接收到用户端的SSL握手请求,确定所述SSL握手请求的目标域名,判断此第一处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并使用此私钥与所述用户端进行SSL握手处理,如果否,向第二处理器发送获取此目标域名对应的私钥的请求;还用于从所述第二处理器获取此私钥并使用此私钥与所述用户端进行SSL握手处理,将此目标域名和私钥保存在此第一处理器的缓存设备;
第二处理器用于从所述第一处理器接收到获取私钥的请求后,确定目标域名,判断此第二处理器的缓存设备中是否包含此目标域名对应的私钥,如果是,提取此私钥并发送至所述第一处理器,如果否,从私钥安全存储中心获取此目标域名对应的私钥,将此私钥发送至所述第一处理器并将此私钥存储于此第二处理器的缓存设备。
上述边缘节点的私钥安全处理装置中处理器与此处理器的缓存设备可以位于同一服务器中,即此处理器是服务器的中央处理器,此缓存设备是服务器的存储介质,或者,此装置中的处理器是中央处理器,此处理器的缓存设备是与服务器有线或无线连接的存储设备。
本发明中将所有私钥均加密后集中统一存储于私钥安全存储中心,不存在将私钥明文直接存储在介质上的情况,可以有效保护私钥的安全性,并且无需在边缘节点上部署专用硬件,节省成本。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各装置/单元可以采用硬件的形式实现,也可以采用软件功能装置的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。