本发明涉及通信领域,尤其是一种基于api网关的ssl协议相互转换的方法及装置。
背景技术:
1、随着我国对数据安全重视程度的不断提升,国密ssl证书越来越受到广大政府机关和企业的青睐,成为提升网站数据安全能力的重要技术手段。由于国密ssl和国际ssl的加密算法、消息格式、协议类型不一样,企业无法同时支持国密ssl和国际ssl协议。目前在网站加密协议中大多数使用了tls,少数国内网站使用了国密算法。客户端在连接服务器前无法确定服务器使用了何种协议进行加密,如果使用了错误的协议则会导致连接失败。
2、为了解决以上问题,业界一般使用如下方案:部署两套后端服务器,分别处理国密ssl和国际ssl协议的报文;再部署一套代理设备,根据客户端报文的ssl协议版本,判断客户端报文是国密ssl还是国际ssl协议,将报文转发到对应的后端服务器进行处理。但是此种方案会增加企业成本,同时不利于快速部署。
技术实现思路
1、为解决现有技术存在的问题,本发明提供一种基于api网关的ssl协议相互转换的方法及装置,实现企业在不改造后端服务的情况下,快速低成本的支持国密ssl协议。
2、为实现上述目的,本发明采用下述技术方案:
3、在本发明一实施例中,提出了一种基于api网关的ssl协议相互转换的方法,该方法包括:
4、s01、流量预处理,使用api网关接收客户端流量,并确定流量的协议类型;
5、进一步地,所述s01包括:
6、s011、将国密ssl的证书上传到api网关;
7、s012、接收客户端流量,识别流量中请求头的user-agent字段,判断客户端浏览器是否是全球通用浏览器,将全球通用浏览器的流量直接转发到后端服务;
8、s013、如客户端浏览器不是全球通用浏览器,继续识别ssl协议的client hello报文;
9、s014、解析client hello报文中的版本号,并确定流量的协议类型是国密ssl协议还是国际ssl协议;
10、s015、将后续国际ssl协议的报文匹配路由并转发到后端服务。
11、浏览器的user-agent是不同的,全球通用浏览器目前并不兼容国密ssl协议,通过识别user-agent可以对报文进行初步筛选。
12、进一步地,所述国密ssl协议版本号为0x0101;
13、所述国际ssl协议中tlsv1.0版本号为0x0301,国际ssl协议中tlsv1.1版本号为0x0302,国际ssl协议中tlsv1.2版本号为0x0303,国际ssl协议中tlsv1.3版本号为0x0304。
14、s02、配置管理,对国密ssl协议和国际ssl协议的映射关系进行管理;
15、进一步地,所述s02包括:
16、s021、将国密ssl协议的版本号映射成后端服务支持的最高tls版本号;
17、例如:后端服务同时支持tlsv1.0、tlsv1.1、tlsv1.2和tlsv1.3,此时选择tlsv1.3作为国密ssl协议映射的tls版本。
18、s022、将国际ssl协议的客户端随机数、压缩算法列表、扩展字段与国密ssl协议保持一致;
19、进一步地,所述s022中压缩算法包括:null压缩算法、lzs压缩算法、deflate压缩算法、gzip压缩算法等。
20、s023、将国密ssl协议支持的密码套件映射成对应的国际ssl协议密码套件;
21、进一步地,所述s023中密码套件包括加密算法和密钥长度。
22、进一步地,所述s023中国密ssl协议的常用加密算法包括:sm2、sm3和sm4;国际ssl协议的常用加密算法包括:rsa、sha、diffie-hellman、aes等算法。
23、国密ssl协议和国际ssl协议算法的密钥长度和加密强度并不完全对等,例如:rsa加密算法常用的密钥长度是2048位,sm2算法常用的密钥长度是256位,等同于rsa的3072位。
24、例如:将国密ssl协议的256位密钥长度的sm2算法映射成2048位密钥长度的rsa算法。
25、s024、根据新的报文长度重新生成国际ssl协议的长度字段。
26、s03、协议转换,对国密ssl协议的流量进行转换,将客户端的流量和国际ssl协议的流量相互转换;
27、进一步地,所述s03包括:
28、s031、根据映射关系,将国密ssl协议的流量重新封装成国际ssl协议的clienthello报文;
29、s032、使用重新封装的client hello报文与后端服务建立连接;
30、s033、将重新封装的client hello报文源端口作为key,客户端的源ip和源端口作为value,将key-value存入redis缓存;
31、进一步地,所述s033中源端口为:api网关访问后端服务使用的端口。
32、进一步地,所述s033中源ip和源端口分别为:客户端访问api网关的ip和使用的端口。
33、s034、对后续客户端的国密ssl协议报文进行ssl卸载,并根据所述映射关系,生成新的国际ssl报文。
34、s04、流量转发,将转换后的国际ssl报文转发到后端服务,再将收到的后端服务响应转发到客户端。
35、进一步地,所述s04包括:
36、s041、将转换后的国际ssl报文转发到后端服务;
37、s042、api网关收到后端服务的响应时,使用响应报文中的目的端口作为key,找到对应的客户端ip和端口;
38、进一步地,所述响应报文中的目的端口为:api网关访问后端服务使用的端口。
39、s043、对国际ssl的报文进行卸载,按照映射关系,重新封装成国密ssl报文;
40、s044、将封装后的国密ssl报文转发到所述客户端ip和端口;
41、s045、后续客户端请求按照流量转发模块的规则进行转发。
42、在本发明一实施例中,还提出了一种基于api网关的ssl协议相互转换的装置,该装置包括:
43、流量预处理模块,使用api网关接收客户端流量,并确定流量的协议类型是国密ssl协议还是国际ssl协议;
44、配置管理模块,对国密ssl协议和国际ssl协议的映射关系进行管理;
45、协议转换模块,对国密ssl协议的流量进行转换,将客户端的流量和国际ssl协议的流量相互转换;
46、流量转发模块,用于将转换后的国际ssl报文转发到后端服务,再将收到的后端服务响应转换后转发到客户端。
47、在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述基于api网关的ssl协议相互转换的方法。
48、在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行基于api网关的ssl协议相互转换的方法的计算机程序。
49、有益效果:
50、本发明一种基于api网关的ssl协议相互转换的方法及装置,无需部署两套后端服务器,在不改造后端服务的情况下,可快速部署,以低成本的方式支持国密ssl协议。
1.一种基于api网关的ssl协议相互转换的方法,其特征在于,该方法包括:
2.根据权利要求1所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s01包括:
3.根据权利要求2所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述国密ssl协议版本号为0x0101;
4.根据权利要求1所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s02包括:
5.根据权利要求4所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s022中压缩算法包括:null压缩算法、lzs压缩算法、deflate压缩算法、gzip压缩算法。
6.根据权利要求4所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s023中密码套件包括加密算法和密钥长度。
7.根据权利要求4所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s023中国密ssl协议的加密算法包括:sm2、sm3和sm4;国际ssl协议的加密算法包括:rsa、sha、diffie-hellman、aes。
8.根据权利要求1所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s03包括:
9.根据权利要求8所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s033中源端口为:api网关访问后端服务使用的端口。
10.根据权利要求8所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s033中源ip和源端口分别为:客户端访问api网关的ip和使用的端口。
11.根据权利要求1所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述s04包括:
12.根据权利要求11所述的基于api网关的ssl协议相互转换的方法,其特征在于,所述响应报文中的目的端口为:api网关访问后端服务使用的端口。
13.一种基于api网关的ssl协议相互转换的装置,其特征在于,该装置包括:
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-12任一项所述方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-12任一项所述方法的计算机程序。
