一种ssl服务端动态选择证书的实现方法

文档序号:7898461阅读:677来源:国知局
专利名称:一种ssl服务端动态选择证书的实现方法
技术领域
本发明涉及一种动态选择证书的实现方法,特别涉及一种自动选择RSA和ECC证书的SSL服务端动态选择证书的实现方法。
背景技术
SSL协议在网络中得到广泛的应用,常见的SSL服务端实现使用RSA签名的站点证书作为服务端证书,用于协议握手过程中的身份验证和密钥交换。随着ECC (椭圆曲线)算法的发展,目前也出现了使用ECC证书的SSL服务端实现, 比如较新版本的Apache HTTP Server。但由于目前使用ECC证书的SSL服务端相对使用 RSA证书的SSL服务端较少,只有Firefox等新兴浏览器有一定的支持,IE等传统浏览器仍然只支持RSA算法,因此在SSL服务端仍然无法推广使用ECC证书,否则会造成与IE浏览器等旧版本SSL客户端的不兼容。现有的SSL协议相关规范(包括RFC相关规范和国家相关的密码规范)只对SSL握手过程中的算法协商有一定规定,却没有对证书的选择进行规范化和建议。综上所述,针对现有技术的缺陷,特别需要一种SSL服务端动态选择证书的实现方法,以解决以上提到的问题。

发明内容
本发明的目的在于提供一种SSL服务端动态选择证书的实现方法,解决上述现有技术的缺陷,实现SSL服务端握手的动态选择证书,从而支持对不同客户端的兼容和两种算法的平滑过渡。本发明所解决的技术问题可以采用以下技术方案来实现
一种SSL服务端动态选择证书的实现方法,其特征在于,它包括如下步骤
1)在SSL服务端预先配置两套站点证书,一套为ECC证书,另一套为RSA证书;
2)客户端发起请求时,在SSL协议的ClientHell0包中声明自身支持的算法;
3)SSL服务端检查收到的ClientHell0包,分析其支持的算法,如果支持ECC算法则选用ECC相关的证书进行后续的SSL握手;如果不支持ECC算法则仍选用RSA相关的证书进行后续的SSL握手;
4)客户端和SSL服务端完成SSL握手的后续步骤。本发明的一个实施例中,客户端根据服务端选择的算法组合使用对应的算法进行密钥交换,并发送自身的相关的证书。本发明的一个实施例中,客户端根据之前选择的算法组合使用对应的算法进行密钥交换和身份验证,并完成SSL握手过程。本发明的SSL服务端动态选择证书的实现方法,通过在客户端发起请求时SSL协议的ClientHell0包中声明自身支持的算法,实现SSL服务端握手的动态选择证书,从而支持对不同客户端的兼容和两种算法的平滑过渡,实现本发明的目的。
本发明的特点可参阅本案图式及以下较好实施方式的详细说明而获得清楚地了解。


图1为支持ECC算法的客户端和SSL服务端握手的流程示意图。图2为不支持ECC算法的客户端与SSL服务端握手的流程示意图。
具体实施例方式为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。如图1、图2所示,本发明的SSL服务端动态选择证书的实现方法,它包括如下步骤
1)在SSL服务端预先配置两套站点证书,一套为ECC证书,另一套为RSA证书;
2)客户端发起请求时,在SSL协议的ClientHell0包中声明自身支持的算法; struct {
ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher—suites〈2· . 2"16_2>; CompressionMethod compression—methods〈L . 2"8_1>; select (extensions—present) { case false:
struct {}; case true:
Extension extensions<0. . 2"16-1>;
};
} ClientHello;
3)SSL服务端检查收到的ClientHello包,分析其支持的算法,如果支持ECC算法则选用ECC相关的证书进行后续的SSL握手;如果不支持ECC算法则仍选用RSA相关的证书进行后续的SSL握手;
如果客户端支持ECC算法,则选择RFC 4492规范中指定的ECC相关算法组合,否则使用RFC 5246规范中在hiding的RSA相关算法组合。服务端检查收到的ClientHello包,分析其支持的算法,如果支持ECC则在返回的 ServerHello中的CipherSuite字段中指定后续握手使用的算法组合。struct {
ProtocolVersion server_version; Random random; SessionID session_id; CipherSuite cipher_suite;CompressionMethod compression—method; select (extensions—present) { case false:
struct {}; case true:
Extension extensions<0. . 2"16-1>;
};
} ServerHello;
算法集合的定义参照RFC 4492和RFC 5246相关规范。4)客户端和SSL服务端完成SSL握手的后续步骤。如果前一步骤选择了 ECC算法,则服务端在krverCertificate包中向客户端发送自身的ECC证书,否则向客户端发送自身的RSA证书。客户端根据服务端选择的算法组合使用对应的算法进行密钥交换,并发送自身的相关的证书。客户端根据之前选择的算法组合使用对应的算法进行密钥交换和身份验证,并完成SSL握手过程。本发明的优点在于整个过程中的客户端只需要遵循SSL协议相关国际规范,不需要做任何修改和定制,现有的所有商业浏览器和SSL客户端实现均支持。而服务端则在原有SSL协议处理流程的基础上设计了动态选择证书的实现,从而实现了对RSA和ECC证书的自适应,可以让一个服务端同时兼容不同算法的客户端,为不同证书体系的平滑过渡提供了基础。以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内,本发明要求保护范围由所附的权利要求书及其等效物界定.。
权利要求
1.一种SSL服务端动态选择证书的实现方法,其特征在于,它包括如下步骤1)在SSL服务端预先配置两套站点证书,一套为ECC证书,另一套为RSA证书;2)客户端发起请求时,在SSL协议的ClientHell0包中声明自身支持的算法;3)SSL服务端检查收到的ClientHell0包,分析其支持的算法,如果支持ECC算法则选用ECC相关的证书进行后续的SSL握手;如果不支持ECC算法则仍选用RSA相关的证书进行后续的SSL握手;4)客户端和SSL服务端完成SSL握手的后续步骤。
2.如权利要求1所述的SSL服务端动态选择证书的实现方法,其特征在于,客户端根据服务端选择的算法组合使用对应的算法进行密钥交换,并发送自身的相关的证书。
3.如权利要求1所述的SSL服务端动态选择证书的实现方法,其特征在于,客户端根据之前选择的算法组合使用对应的算法进行密钥交换和身份验证,并完成SSL握手过程。
全文摘要
本发明的目的在于公开一种SSL服务端动态选择证书的实现方法,通过在客户端发起请求时SSL协议的ClientHello包中声明自身支持的算法,实现SSL服务端握手的动态选择证书,从而支持对不同客户端的兼容和两种算法的平滑过渡,实现本发明的目的。
文档编号H04L29/06GK102546572SQ20101061900
公开日2012年7月4日 申请日期2010年12月31日 优先权日2010年12月31日
发明者张义民, 掌晓愚, 韩洪慧 申请人:上海格尔软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1