一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于国密和国际算法的HTTPS请求的处理方法和装置与流程

2022-05-27 01:20:56 来源:中国专利 TAG:

基于国密和国际算法的https请求的处理方法和装置
技术领域
1.本技术涉及互联网技术领域,特别涉及一种基于国密和国际算法的https请求的处理方法和装置。


背景技术:

2.随着互联网技术的飞速发展,用户对网络通信的安全性提出了更高的要求。因此,超文本传输安全协议(hypertext transfer protocol secure,https)已被越来越多的网站使用。
3.https是以安全为目标的超文本传送协议(hypertext transfer protocol,http)通道,通过在http下加入安全套接层协议(secure sockets layer,ssl)或安全传输层协议(transport layer security,tls),从而实现传输加密。
4.目前,大部分网站的https传输采用的是国际协议和国际算法,不兼容我国要求的国密协议和国密算法。因此,如何适配国密协议和国密算法,使得网站的https传输符合国家信息安全技术标准,视为亟待解决的问题。


技术实现要素:

5.本技术提供一种基于国密和国际算法的https请求的处理方法和装置,通过自动识别来自终端设备的https请求的协议类型,根据协议类型执行不同的处理,实现适配国密协议的同时,兼容国际协议,国密协议和国际协议的处理逻辑相互隔离,互不影响。
6.第一方面,本技术实施例提供一种基于国密和国际算法的https请求的处理方法,应用于代理节点,所述方法包括:
7.接收来自终端设备的https请求;
8.确定所述https请求的协议类型;
9.当所述协议类型指示所述https请求为国密https请求时,对所述国密https请求执行国密协议处理逻辑;
10.当所述协议类型指示所述https请求为国际https请求时,对所述国际https请求执行国际协议处理逻辑。
11.第二方面,本技术实施例提供一种基于国密和国际算法的https请求的处理装置,所述装置集成在代理节点上,所述装置包括:
12.收发模块,用于来自终端设备的https请求;
13.处理模块,用于确定所述https请求的协议类型;当所述协议类型指示所述https请求为国密https请求时,对所述国密https请求执行国密协议处理逻辑;当所述协议类型指示所述https请求为国际https请求时,对所述国际https请求执行国际协议处理逻辑。
14.第三方面,本技术实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。
15.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面或第一方面各种可能的实现方式所述的方法。
16.第五方面,本技术实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。
17.本技术实施例提供的基于国密和国际算法的https请求的处理方法和装置,代理节点接收到来自终端设备的https请求之后,确定https请求的协议类型,根据协议类型对https请求执行国密协议处理逻辑或国际协议处理逻辑。采用该种方案,通过自动识别来自终端设备的https请求的协议类型,根据协议类型执行不同的处理,实现适配国密协议的同时,兼容国际协议,国密协议和国际协议的处理逻辑相互隔离,互不影响。
附图说明
18.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是本技术实施例提供的基于国密和国际算法的https请求的处理方法所适用的网络架构示意图;
20.图2是本技术实施例提供的基于国密和国际算法的https请求的处理方法的流程图;
21.图3是本技术实施例提供的基于国密和国际算法的https请求的处理方法中的握手流程图;
22.图4是本技术实施例提供的基于国密和国际算法的https请求的处理方法中证书加载的流程图;
23.图5是本技术实施例提供的基于国密和国际算法的https请求的处理方法中握手的流程图;
24.图6是本技术实施例提供的基于国密和国际算法的https请求的处理方法中回源侧的流程图;
25.图7为本技术实施例提供的一种基于国密和国际算法的https请求的处理装置的示意图;
26.图8为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
27.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
28.https是以安全为目标的http通道,简单而言就是http的安全版,通过在tcp层之上引入tls、ssl协议,来实现对http数据的保护,实现数据加密、完整性校验以及防篡改。
29.目前,从https传输采用的协议和算法,可以将https传输分为国际https传输和国密https传输,国际https传输采用国际协议和国密算法,国密https传输采用国密协议和国
密算法。国际协议指标准的tls协议、ssl协议等,国际算法包括rsa算法等。国密协议用gmssl标识,采用双证书tls协议。双证书tls协议主要在ssl握手环节引入了加密证书和签名证书,并对tlsv1.1的握手流程进行了一些修改以适应双证书结构。国密算法包括sm系列的算法。
30.目前,大部分网站的https传输采用的是国际协议和国际算法,不兼容我国要求的国密协议和国密算法。也就是说,大部分网站的https传输为国际https传输,而非国密https传输。
31.经验证发现:国密算法的性能优于国际算法,比如,sm2算法的安全性能高于国际算法中的rsa算法。因此,我国国家信息安全技术标准要求各网站采用国密https传输,即采用国密协议和国密算法。
32.因此,如何适配国密协议和国密算法,使得网站的https传输符合国家信息安全技术标准,视为亟待解决的问题。
33.基于此,本技术实施例提供一种基于国密和国际算法的https请求的处理方法和装置,通过自动识别来自终端设备的https请求的协议类型,根据协议类型执行不同的处理,实现适配国密协议的同时,兼容国际协议,国密协议和国际协议的处理逻辑相互隔离,互不影响。
34.图1是本技术实施例提供的https请求的处理方法所适用的网络架构示意图。请参照图1,该网络架构包括:代理节点11、终端设备12和源站13。代理节点11和终端设备12建立网络连接,代理节点11还与源站13建立网络连接。代理节点11也可以称之为中转服务器、代理服务器等,应用场景包括但不限于分布式集群、内容分发网络等。代理节点11和终端设备12交互时,终端设备12为客户端,代理节点11为服务端。代理节点11与源站13交互时,代理节点11为客户端,源站13为服务端。也就是说,代理节点11融合了客户端和服务端的双重角色。终端设备12和代理节点11之间的通路称之为请求侧通路或请求通路,代理节点11和源站13之间的通路称之为回源侧通路或回源通路。
35.图1中,代理节点11同时支持国密协议和国际协议,并能自动识别出国际协议和国密协议,国密https请求的国密协议处理逻辑和国际https请求的国际协议处理逻辑相互隔离,互不影响。代理节点11能同时为这两种协议提供服务,当国密协议出现问题时,通过配置版本号关闭国密协议,恢复成国际协议。这样一来,仅影响国密https请求的国密协议处理逻辑,不影响原来的国际https请求的国际协议处理逻辑。
36.图1中,代理节点11在配置上兼容国际协议原生的ssl协议、国际证书的配置,同时扩展配置支持国密协议和国密双证书。国密双证书的加载与国际证书的加载共存互不影响,即不影响国际协议和国际协议使用的rsa证书、ec证书。
37.另外,用户可根据需要,在请求侧或回源侧选择不同的加密算法,兼容效率和安全。
38.下面,在图1所示网络架构的基础上,对本技术实施例所述的https请求的处理方法进行详细说明。示例性的,请参照图2。
39.图2是本技术实施例提供的基于国密和国际算法的https请求的处理方法的流程图。本实施例是从代理节点的角度进行说明。本实施例包括:
40.201、接收来自终端设备的https请求。
41.示例性的,终端设备上安装客户端,有些客户端仅支持国密https传输,有些客户端仅支持国际https传输,有些客户端同时支持国际https传输和国密https传输。
42.终端设备向代理节点发送https请求,相应的,代理节点接收来自终端设备的https请求。
43.202、确定所述https请求的协议类型。
44.代理节点根据版本号或套件等确定https请求的协议类型。例如,代理节点确定https请求携带的协议版本的版本号是否为国密协议的版本号,若版本号为国密协议的版本号,则认为https请求是一个国密https请求,若版本号为国际协议的版本号,则认为https请求是一个国际https请求。再如,代理节点确定https请求携带的套件列表中的套件是国密套件还是国际套件,若https请求携带国密套件,则认为https请求是国密https请求;若https请求携带国际套件,则认为https请求是国际https请求。
45.203、当所述协议类型指示所述https请求为国密https请求时,对所述国密https请求执行国密协议处理逻辑;
46.204、当所述协议类型指示所述https请求为国际https请求时,对所述国际https请求执行国际协议处理逻辑。
47.步骤203和步骤204中,代理节点根据协议类型处理https请求,国密协议处理逻辑和国际协议处理逻辑相互隔离,互不影响。国密协议处理逻辑包括版本协商、套件协商和密钥协商,从而协商出国密协议版本、国密算法套件和对称密钥以及国密双证书等并进行握手流程。国际协议处理逻辑包括版本协商、套件协商和密钥协商,从而协商出国际协议版本、国际算法套件、对称密钥以及国际证书等,并进行握手流程。
48.本技术实施例提供的https请求的处理方法,代理节点接收到来自终端设备的https请求之后,确定https请求的协议类型,根据协议类型对https请求执行国密协议处理逻辑或国际协议处理逻辑。采用该种方案,通过自动识别来自终端设备的https请求的协议类型,根据协议类型执行不同的处理,实现适配国密协议的同时,兼容国际协议,国密协议和国际协议的处理逻辑相互隔离,互不影响。
49.图3是本技术实施例提供的基于国密和国际算法的https请求的处理方法中的握手流程图。本实施例中,当客户端为终端设备时,服务端为代理节点。当客户端为代理节点时,服务端为源站。本实施例包括:
50.301、客户端向服务端发送客户端hello消息(client_hello)。
51.302、服务端向客户端发送服务端hello消息(server_hello)。
52.示例性的,服务端接收到client_hello后,发送server_hello作为回应。
53.303、服务端向客户端发送服务端证书(certificate)。
54.304、服务端向客户端发送服务端密钥交换消息(server_key_exchange)。
55.305、服务端向客户端发送证书请求消息(certificate_request)。
56.306、服务端向客户端发送服务端hello完成消息(server_hello_done)。
57.307、客户端向服务端发送客户端证书(certificate)。
58.308、客户端向服务端发送客户端密钥交换消息(client_key_exchange)。
59.309、客户端向服务端发送客户端证书验证消息(certificate_verify)。
60.310、客户端向服务端发送更换密码套件消息(change_cipher_spec)。
61.311、客户端向服务端发送结束消息(finished)。
62.312、服务端向客户端发送更换密码套件消息(change_cipher_spec)。
63.313、服务端向客户端发送结束消息(finished)。
64.314、服务端和客户端之间进行数据(data)交互。
65.请参照图3,国密https传输和国际https传输的差异主要体现在步骤303服务端发送的证书以及步骤304服务端发送的服务端密钥交换消息。由于握手相关的状态机和流程比较复杂,如果直接在原来的国际协议的流程上增加国密协议,很容易导致握手流程出现问题。一旦出现问题,不仅对国密https传输产生影响,还会干扰国际https传输。
66.为此,本技术实施例中,在代理节点上设置一个协议适配模块,利用协议适配模块区分代理节点接收到的https请求的协议类型,对国际https请求执行国际协议处理逻辑,对国密https请求执行国密协议处理逻辑。通过隔离国际协议处理逻辑和国密协议处理逻辑,减少两者之间的关联,实现适配国密协议的同时,兼容国际协议的目的。而且,后续对国密协议处理逻辑的扩展或bug修复都是独立的,不影响原来的国际协议处理逻辑。
67.需要说明的是,步骤305、步骤307和步骤309和证书的双向认证流程有关。鉴于国密协议目前对证书的双向认证流程没有标准。因此,图3中,步骤305、步骤307和步骤309是可选步骤。
68.上述实施例中,代理节点对https请求处理之前,获取多个证书以及所述代理节点支持的各协议版本。接着,代理节点根据所述代理节点支持的各协议版本设置上下文,所述上下文用于版本协商。之后,对于所述多个证书中的每个证书,根据各证书的配置,将所述多个证书中的各证书加载到所述代理节点的不同槽位。
69.示例性的,用户可以在代理节点上配置多个证书,将配置下发给代理节点,代理节点保存该些证书。例如,代理节点上的一块存储空间被分成多个槽位,预先定义好每个槽位存储的证书的类型。代理节点获取到多个证书后,对于每个证书,根据该证书的配置确定证书类型,根据证书类型确定出槽位,进而将证书加载在对应的槽位中。若代理节点根据用户下发的配置得到多个证书,则多个证书加载在不同的槽位中。
70.采用该种方案,代理节点预先获取国际证书、国密证书和协议版本,将各证书加载在代理节点的不同槽位中,实现代理节点同时支持国际协议和国密协议的目的。
71.图4是本技术实施例提供的基于国密和国际算法的https请求的处理方法中证书加载的流程图。本实施例包括:
72.401、代理节点根据用户输入获取国密证书、国际证书和协议版本。
73.示例性的,运维人员通过运维电脑向代理节点下发配置,该下发配置中指示代理节点支持的协议版本、证书。例如,代理节点支持国密协议,国密协议的版本号为0x101。再如,代理节点支持国际协议,国际协议的版本号为0x300等。
74.402、代理节点根据所述代理节点支持的各协议版本设置上下文。
75.本技术实施例中,每个协议版本的版本号对对应一个唯一值,不同版本号的值不同。例如,国际协议包括sslv3、tlsv1、tlsv1_1、tlsv1_2、tlsv1_3等,版本号分别为0x300、0x301、0x302、0x303、0x304等,该些版本号分别对应不同的值。同理,国密协议gmtls的版本号为0x101,该版本号对应的值与国际协议的版本号对应的值不同。假设代理节点支持的国际协议的版本号为:0x300、0x301、0x302、0x303,同时,该代理节点支持版本号为0x101的国
密协议。那么,代理节点就可以根据各协议版本对应的值,确定出所有支持的协议版本的值的总和。
76.本步骤中,代理节点支持一个或多个协议版本,根据各协议版本的值设置上下文。
77.403、对于多个证书中的每个证书,确定该证书是否为国密证书,若该证书为国际证书,则执行步骤404;若该证书为国密证书,则执行步骤406。
78.404、确定所述国际证书的证书类型。
79.405、从所述代理节点的多个槽位中确定出所述国际证书的证书类型对应的第一槽位,将所述国际证书加载至所述第一槽位。
80.示例性的,国际证书包括ecc类型、rsa类型的证书。对于每一个国际证书,代理节点确定该国际证书的类型,进而将该国际证书加载在该类型对应的第一槽位。
81.代理节点能够根据用户下发的配置确定一个证书是否为国密证书。例如,用户下发的配置如下:
82.国际证书使用ssl_certificate和ssl_certificate_key配置;
83.国密证书使用gmssl开头的四个配置;
84.ssl_certificate rsa.crt
85.ssl_certificate_key rsa.key
86.ssl_certificate ecc.crt
87.ssl_certificate_key ecc.key
88....
89.gmssl_sign_crt sm2_sign.crt
90.gmssl_sign_crt_key sm2_sign.key
91.gmssl_enc_crt sm2_enc.crt
92.gmssl_enc_crt_key sm2_enc.key
93.gmssl_sign_crt rsa_sign.crt
94.gmssl_sign_crt_key rsa_sign.key
95.gmssl_enc_crt rsa_enc.crt
96.gmssl_enc_crt_key rsa_enc.key
97.根据该配置可知:用户给代理节点配置了12个证书,这12个证书中,ssl_certificate或ssl_certificate_key开头的都是国际证书,国密证书都是以gmssl开头。
98.由此可知:代理节点收到用户下发的配置后,根据每个证书的开头就能够确定出证书的类型,之后,根据证书的类型将证书加载在合适的槽位。
99.采用该种方案,通过根据证书类型将国际证书加载到第一槽位,确保国际https传输不受影响,保证国际https传输的质量。
100.406、代理节点校验签名证书和加密证书的合法性。
101.本技术实施例中,国密协议要求使用双证书体系,即一套国密证书包括一个签名证书和一个加密证书,以及签名证书的私钥、加密证书的私钥。其中,签名证书用来做身份校验,加密证书用来加密。示例性的,请参照表1。
102.表1
[0103][0104]
表1描述了国密套件的定义,请参照表1,每个国密套件有对应的套件名称、值、密钥交换算法、身份认证、对称加密算法和哈希算法。一个国密套件的一套国密证书包括一个签名证书和一个加密证书,国密证书的类型根据身份认证算法确定。例如,表1中,套件rsa-sm4-cbc-sm3需要两本rsa证书,分别为签名证书和加密证书。同理,套件ecc-sm4-cbc-sm3除了需要一本sm2签名证书外,还需要一本sm2加密证书。另外,每个签名证书还有一个私钥,每个加密证书也有一个私钥。
[0105]
例如,以下则为一套国密证书:
[0106]
gmssl_sign_crt sm2_sign.crt(签名证书)
[0107]
gmssl_sign_crt_key sm2_sign.key(签名证书的私钥)
[0108]
gmssl_enc_crt sm2_enc.crt(加密证书)
[0109]
gmssl_enc_crt_key sm2_enc.key(加密证书的私钥)
[0110]
当代理节点根据gmssl识别出国密证书配置,若该国密证书配置中包含sign.crt,则确定该配置是签名证书。若该国密证书配置中包含sign.key,则该配置是签名证书的私钥。同理,代理节点能够识别出加密证书和加密证书的私钥。
[0111]
当代理节点识别出一套国密证书包含一个签名证书和一个加密证书,以及签名证书的私钥、加密证书的私钥,则认为该套国密证书是合法的。若一套国密证书包含的内容不是一个签名证书、一个加密证书、签名证书的私钥、加密证书的私钥的组合,则代理节点认为这套国密证书不合法。
[0112]
本技术实施例中,引入国密证书后,国密证书不能影响到国际协议使用的证书。例如,国密协议的sm2证书不影响国际ec证书。sm2证书也是一种ec证书。国际rsa证书和国密双rsa证书互不干扰。
[0113]
为了实现该目的,代理节点为rsa签名证书、rsa加密证书、sm2签名证书、sm2加密证书分别提供单独的存放位置,加载的时候使用单独的接口加载国密双证书,且对双证书的类型进行严格的类型校验,即校验签名证书和加密证书类型是否相同,具体见下述步骤407-412。
[0114]
407、从所述代理节点的多个槽位中确定出所述第二槽位和第三槽位,将所述签名证书加载至所述第二槽位,将所述加密证书加载至所述第三槽位。
[0115]
示例性的,请参照表2。
[0116]
表2
[0117]
12345678rsarsa-pssecc
……
sm2-signsm2-encrsa-signrsa-enc
[0118]
请参照表2,预先定义各槽位存储的证书的协议类型和证书类型。比如,预先定义第1个槽位用于存储国际协议的、rsa类型的证书。那么,代理节点收到用户下发的配置后,
根据配置确定出一个证书为国际协议的证书且类型为rsa,则将该证书存储在第1个槽位。
[0119]
请参照表2,代理节点的存储空间有8个槽位,第1个槽位、第2个槽位、第3个槽位分别用于存储国际协议的rsa证书、rsa-pss证书、ecc证书。
[0120]
第5个槽位、第6个槽位分别用于存储sm2类型的、国密协议的签名证书和加密证书。第5个槽位还存储签名证书的私钥。第6个槽位还存储加密证书的私钥。
[0121]
第7个槽位、第8个槽位分别用于存储rsa类型的、国密协议的签名证书和加密证书。第7个槽位还存储签名证书的私钥。第8个槽位还存储加密证书的私钥。
[0122]
采用该种方案,通过根据证书类型将加密证书和签名证书加载到预设的槽位,确保国密https传输不受影响,保证国密https传输的质量。
[0123]
408、代理节点根据所述签名证书的公钥确定所述签名证书的类型。
[0124]
每个证书的公钥是已知的,代理节点根据公钥对应的公钥算法(public key algorithm)确定签名证书的类型。例如,public key algorithm为rsaencryption publickey,则签名证书为rsa类型的证书。
[0125]
再如,public key algorithm为id-ec publickey,则签名证书为ec类型的证书。
[0126]
409、代理节点根据所述加密证书的公钥确定所述加密证书的类型。
[0127]
具体可参见步骤408,此处不再赘述。
[0128]
410、代理节点根据所述签名证书的类型和所述加密证书的类型,确定所述签名证书和所述加密证书是否为相同类型的证书。若签名证书和加密证书的类型相同,则执行步骤411;若签名证书和加密证书的类型不同,则执行步骤412。
[0129]
示例性的,对于一套国密证书,代理节点判断加密证书和签名证书是否为相同类型的证书,比如,同为sm2类型或rsa类型。
[0130]
411、输出配置成功的指示消息。
[0131]
412、输出配置失败的指示消息。
[0132]
采用该种方案,通过严格校验双证书的类型,实现确保国密https传输的质量的目的。
[0133]
图5是本技术实施例提供的基于国密和国际算法的https请求的处理方法中握手的流程图。本实施例包括:
[0134]
501、代理节点接收来自终端设备的https请求。
[0135]
示例性的,https请求是终端设备的clienthello消息的一个包。
[0136]
502、代理节点确定https请求的协议类型,当所述协议类型指示所述https请求为国密https请求时,执行步骤503;当所述协议类型指示所述https请求为国际https请求时,执行步骤507。
[0137]
示例性的,代理节点上设置一个协议适配模块,利用协议适配模块在clienthello阶段自动区分出国密协议和国际协议,即自动识别https请求是国密https请求还是国际https请求。识别的依据是https请求携带的协议版本的版本号、套件等。经过协议适配模块后,国密https请求进入国密协议处理逻辑,国际https请求进入国际协议处理逻辑。国密协议处理逻辑包括协议版本的协商、套件的协商、密钥协商等。同理,国际协议处理逻辑包括协议版本的协商、套件的协商和密钥协商等。
[0138]
采用该种方案,通过协议适配模块对国密协议和国际协议的逻辑做到了较好的隔
离,不影响原先的国际协议。而且,后续对国密协议处理逻辑的修改和功能扩展可单独进行。
[0139]
503、代理节点选择出国密协议版本。
[0140]
代理节点确定自身支持的版本列表中是否存在目标版本号,所述目标版本号是所述https请求携带的版本号。若版本列表中存在目标版本号,则将目标版本号指示的版本为协商出的协议版本。若版本列表中不存在目标版本号,则版本协商失败。
[0141]
本技术实施例中,国际协议和国密协议隔离后,针对国密协议定义一个新的数组,用来作为国密协议版本的版本号,该版本号为0x101。引入国密协议的版本号,国密协议处理逻辑不影响国际协议处理逻辑。
[0142]
终端设备发送的https请求例如是clienthello消息的一个包。该https请求中携带目标版本号。代理节点接收到https请求后,判断自身支持的协议版本中是否存在目标版本号。
[0143]
采用该种方案,实现快速、准确协商出协议版本的目的。
[0144]
504、代理节点选择出国密协议的套件。
[0145]
代理节点选择出目标版本号对应的协议版本后,进行套件协商。套件协商过程中,代理节点根据映射表和目标版本号确定可用套件列表。其中,映射表中存储版本号和套件的关联关系。
[0146]
示例性的,预先设定套件和版本号的关联关系。比如,国密协议的版本号为0x101,与该版本号关联的套件如表1所示。由于国密协议的版本号和国际协议的版本号不一样,因此,当https请求是国密https请求时,不可能选中国际套件;反之亦然。
[0147]
因此,若https请求携带的版本号是0x101,则代理节点确定出可用套件列表为表1。之后,从表1中选择中最终使用的套件,即目标可用套件。
[0148]
从可用套件列表中确定出目标可用套件的过程中,代理节点确定预先配置的证书类型,根据预设的证书类型从可用套件列表中确定出目标可用套件。例如,可用套件列表如表1所示,预设的证书类型为rsa类,则目标可用套件为rsa-sm4-cbc-sm3,该套件中身份认证算法为rsa算法,身份认证算法和预设的证书类型匹配。再如,可用套件列表如表1所示,预设的证书类型为sm2类,则目标可用套件为ecc-sm4-cbc-sm3,该套件中身份认证算法为sm2算法,身份认证算法和预设的证书类型匹配。
[0149]
由此可见:本技术实施例中,套件的选择和证书类型也是相关的。如果证书的类型和套件的身份认证算法匹配,那么这个套件是目标可用套件。
[0150]
本技术实施例中,考虑到国密新增证书的影响,特地将国密sm2证书和国密rsa证书对应的身份认证类型设置成唯一的,不复用国际证书的身份认证类型。因此,国际证书和国密证书只会在对应的协议使用,两者不混用。
[0151]
代理节点选择出国密协议版本和国密协议套件后,和客户端进行秘钥协商。协商出对称秘钥后,利用协商出的秘钥的进行正常的加解密,部分步骤如步骤505和步骤506。
[0152]
505、根据所述目标可用套件确定出加密证书和签名证书。
[0153]
本技术实施例中,签名证书、加密证书的类型和目标可用套件的身份认证算法相关。例,上述表1中,套件rsa-sm4-cbc-sm3的身份认证算法为rsa算法,因此需要两本rsa证书,分别为签名证书和加密证书。
[0154]
506、代理节点向终端设备发送加密证书和所述签名证书。
[0155]
示例性的,代理节点将加密证书和签名证书发给终端设备,并进行certificate的发送等,最终进行ssl握手。具体可参见图3的描述,此处不再赘述。
[0156]
507、代理节点选择出国际协议版本。
[0157]
508、代理节点选择出国际协议的套件。
[0158]
代理节点选择出国际协议版本和国际协议套件后,和客户端进行秘钥协商。协商出对称秘钥后,利用协商出的秘钥的进行正常的加解密,部分步骤如步骤509和步骤510。
[0159]
509、代理节点选择出国际协议证书。
[0160]
510、代理节点向终端设备发送国际协议证书。
[0161]
上述实施例中,代理节点和终端设备交互,此时,代理节点为服务端。下面,对代理节点作为客户端和源站的交互过程进行详细描述。示例性的,请参照图6。
[0162]
图6是本技术实施例提供的基于国密和国际算法的https请求的处理方法中回源侧的流程图。本实施例包括:
[0163]
601、代理节点确定回源方式,当回源方式为国密回源时,执行步骤602;当回源方式为国际回源时,执行步骤603。
[0164]
示例性的,代理节点每次接收到来自客户端的https请求后,根据配置或者条件设置等,确定回源方式。之后,根据回源方式,确定向源站发送的https请求的类型并发送。
[0165]
例如,代理节点接收到的、来自终端设备的https请求为国密https请求,代理节点确定出回源方式为国密回源,则代理节点经过一系列的处理后,向源站发送国密https请求。这种情况下,全链路采用国密https传输。
[0166]
再如,代理节点接收到的、来自终端设备的https请求为国密https请求,代理节点确定出回源方式为国际回源,则代理节点经过一系列的处理后,将国密https请求转换为国际https请求,并向源站发送。这种情况下,仅请求侧采用国密https传输。
[0167]
再如,代理节点接收到的、来自终端设备的https请求为国际https请求,代理节点确定出回源方式为国密回源,则代理节点经过一系列的处理后,将国际https请求转换为国密https请求,并向源站发送。这种情况下,仅回源侧采用国密https传输。
[0168]
又如,代理节点接收到的、来自终端设备的https请求为国际https请求,代理节点确定出回源方式为国际回源,则代理节点经过一系列的处理后,向源站发送国际https请求。这种情况下,全链路采用国际https传输。
[0169]
采用该种方案,代理节点根据接收到的https请求的协议类型,确定出回源方式并向源站发送https请求,实现适配国密协议的同时,兼容国际协议的目的。
[0170]
602、确定代理节点支持的国密协议版本的版本号以及国密套件列表,之后,执行步骤604。
[0171]
示例性的,回源过程中,代理节点作为客户端,源站作为服务端。代理节点作为客户端时,握手过程中确定代理节点支持的国密协议版本的版本号以及国密套件列表,之后携带在国密https请求中向源站发送。服务端接收到国密https请求后,进行后续的版本协商、套件协商和密钥协商等。其中,国密https请求包括client_hello消息等。
[0172]
本步骤也称之为将客户端方法(clientmethod)设置为国密clientmethod。
[0173]
603、确定代理节点支持的国际协议版本的版本号以及国际套件列表。之后,执行
步骤604。
[0174]
本步骤也称之为将客户端方法(clientmethod)设置为国际clientmethod。
[0175]
604、确定客户端方法是否为国密客户端方法,若客户端方法是国密客户端方法,则执行步骤605;若客户端方法是国际客户端方法,则执行步骤606。
[0176]
605、执行国密协议处理逻辑,之后,执行步骤607。
[0177]
需要说明的是,代理节点在执行步骤605中的国密协议处理逻辑时,作为客户端。而代理节点在执行步骤203中的国密协议处理逻辑时,作为服务端。
[0178]
606、执行国际协议处理逻辑,之后,执行步骤607。
[0179]
需要说明的是,代理节点在执行步骤606中的国际协议处理逻辑时,作为客户端。而代理节点在执行步骤204中的国际协议处理逻辑时,作为服务端。
[0180]
607、和源站交互。
[0181]
示例性的,当回源方式为国密回源时,代理节点向所述源站发送携带国密协议版本的版本号以及国密套件列表的国密https请求。之后,代理节点和源站进行握手流程等。
[0182]
当回源方式为国际回源时,代理节点向源站发送携带国际协议版本的版本号以及国际套件列表的国际https请求。之后,代理节点和源站进行握手流程等。
[0183]
采用该种方案,代理节点作为客户端和源站交互时,国际协议处理逻辑和国密协议处理逻辑相互独立,互不干扰,实现适配国际协议的同时,兼容国密协议的目的。
[0184]
上述各实施例可应用于代理节点同时支持国际协议和国密协议的场景。代理节点可以作为服务端和终端设备交互,也可以作为客户端和源站交互。代理节点可以是基于nginx openssl(或者boring)搭建的网关或者服务端环境。
[0185]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0186]
图7为本技术实施例提供的一种基于国密和国际算法的https请求的处理装置的示意图。该https请求的处理装置700包括:收发模块71和处理模块72。
[0187]
收发模块71,用于来自终端设备的https请求;
[0188]
处理模块72,用于确定所述https请求的协议类型;当所述协议类型指示所述https请求为国密https请求时,对所述国密https请求执行国密协议处理逻辑;当所述协议类型指示所述https请求为国际https请求时,对所述国际https请求执行国际协议处理逻辑。
[0189]
一种可行的实现方式中,所述处理模块72当所述协议类型指示所述https请求为国密https请求时,对所述国密https请求执行国密协议处理逻辑之后,还用于确定回源方式;根据所述回源方式,向源站发送所述https请求。
[0190]
一种可行的实现方式中,所述处理模块72,用于当所述回源方式为国密回源时,确定所述代理节点支持的国密协议版本的版本号以及国密套件列表;
[0191]
所述收发模块71,用于向所述源站发送携带所述国密协议版本的版本号以及国密套件列表的国密https请求。
[0192]
一种可行的实现方式中,所述处理模块72,用于当所述回源方式为国际回源时,确定所述代理节点支持的国际协议版本的版本号以及国际套件列表;
[0193]
所述收发模块71,用于向所述源站发送携带所述国际协议版本的版本号以及国际
套件列表的国际https请求。
[0194]
一种可行的实现方式中,所述处理模块72,在所述收发模块71接收来自终端设备的https请求之前,还用于获取多个证书以及所述代理节点支持的各协议版本;根据所述代理节点支持的各协议版本设置上下文,所述上下文用于版本协商;对于所述多个证书中的每个证书,根据各证书的配置,将所述多个证书中的各证书加载到所述代理节点的不同槽位。
[0195]
一种可行的实现方式中,所述处理模块72对于所述多个证书中的每个证书,根据各证书的配置,将所述多个证书中的各证书加载到所述代理节点的不同槽位时,用于对于所述多个证书中的国际证书时,确定所述国际证书的证书类型;
[0196]
从所述代理节点的多个槽位中确定出所述国际证书的证书类型对应的第一槽位,将所述国际证书加载至所述第一槽位。
[0197]
一种可行的实现方式中,所述处理模块72对于所述多个证书中的每个证书,根据各证书的配置,将所述多个证书中的各证书加载到所述代理节点的不同槽位时,用于当所述多个证书中的一套证书的配置指示所述一套证书为国密协议的签名证书和加密证书时,确定所述签名证书和加密证书的合法性;当所述签名证书和所述加密证书合法时,从所述代理节点的多个槽位中确定出所述第二槽位和第三槽位,将所述签名证书加载至所述第二槽位,将所述加密证书加载至所述第三槽位。
[0198]
一种可行的实现方式中,所述处理模块72,还用于根据所述签名证书的公钥确定所述签名证书的类型;根据所述加密证书的公钥确定所述加密证书的类型;根据所述签名证书的类型和所述加密证书的类型,确定所述签名证书和所述加密证书是否为相同类型的证书
[0199]
一种可行的实现方式中,所述处理模块72当所述协议类型指示所述https请求为国密https请求时,对所述国密https请求执行国密协议处理逻辑时,用于确定所述代理节点支持的版本列表中是否存在目标版本号,所述目标版本号是所述https请求携带的版本号;若所述版本列表中存在所述目标版本号,则确定所述目标版本号指示的版本为协商出的协议版本。
[0200]
一种可行的实现方式中,若所述版本列表中存在所述目标版本号,则所述处理模块72确定所述目标版本号指示的版本为协商出的协议版本之后,还用于根据映射表和所述目标版本号确定可用套件列表,所述映射表中存储版本号和套件的关联关系;根据预设的证书类型从所述可用套件列表中确定出目标可用套件;根据所述目标可用套件确定出加密证书和签名证书;
[0201]
所述收发模块71,还用于向所述终端设备发送所述加密证书和所述签名证书,所述加密证书、所述签名证书和所述国际https请求的国际证书分别存储在所述代理节点的不同槽位。
[0202]
本技术实施例提供的基于国密和国际算法的https请求的处理装置,可以执行上述实施例中代理节点的动作,其实现原理和技术效果类似,在此不再赘述。
[0203]
图8为本技术实施例提供的一种电子设备的结构示意图。如图8所示,该电子设备800例如为上述的代理节点,该电子设备800包括:
[0204]
处理器81和存储器82;
[0205]
所述存储器82存储计算机指令;
[0206]
所述处理器81执行所述存储器82存储的计算机指令,使得所述处理器81执行如上代理节点实施的https请求的处理方法。
[0207]
处理器81的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
[0208]
可选地,该电子设备800还包括通信部件83。其中,处理器81、存储器82以及通信部件83可以通过总线84连接。
[0209]
本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上代理节点实施的基于国密和国际算法的https请求的处理方法。
[0210]
本技术实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上代理节点实施的基于国密和国际算法的https请求的处理方法。
[0211]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
[0212]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献