CN116366262A - 双SSL证书web服务器设置方法和web服务系统 - Google Patents

双SSL证书web服务器设置方法和web服务系统 Download PDF

Info

Publication number
CN116366262A
CN116366262A CN202310400346.XA CN202310400346A CN116366262A CN 116366262 A CN116366262 A CN 116366262A CN 202310400346 A CN202310400346 A CN 202310400346A CN 116366262 A CN116366262 A CN 116366262A
Authority
CN
China
Prior art keywords
web server
certificate
algorithm
ssl
client browser
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310400346.XA
Other languages
English (en)
Inventor
周蔚林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Xinjian Information Technology Co ltd
Shuan Times Technology Co ltd
Original Assignee
Guangdong Xinjian Information Technology Co ltd
Shuan Times Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Xinjian Information Technology Co ltd, Shuan Times Technology Co ltd filed Critical Guangdong Xinjian Information Technology Co ltd
Priority to CN202310400346.XA priority Critical patent/CN116366262A/zh
Publication of CN116366262A publication Critical patent/CN116366262A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请属于通信技术领域,公开了一种双SSL证书web服务器设置方法和web服务系统,通过在web服务器中配置国际算法证书和国密算法证书两种SSL证书,并根据客户端浏览器具体支持的加密算法自动选择对应的加密算法与客户端浏览器进行加密通信,能够同时适配非国密浏览器和国密浏览器的应用,把密钥文件存储在独立的密码卡中,并在需要时进行调用,与直接把密钥文件存储在web服务器相比,更不容易泄露,提高了SSL证书密钥的安全性。

Description

双SSL证书web服务器设置方法和web服务系统
技术领域
本申请涉及通信技术领域,具体而言,涉及一种双SSL证书web服务器设置方法和web服务系统。
背景技术
SSL/TLS协议是一种网络通信安全协议,采用公钥加密技术和对称加密技术,对客户端和服务器端之间的数据传输进行加密,确保数据传输的机密性、完整性以及通信方身份真实性。要使用SSL协议,web服务器必须拥有有效的SSL证书,常用的证书有国际RSA证书和国密SM2证书,以适配非国密浏览器(即不支持国密算法的浏览器)和国密浏览器(即支持国密算法的浏览器)的应用,目前,大部分web服务器只部署国际RSA证书和国密SM2证书中的单一一种,难以同时适配非国密浏览器和国密浏览器的应用。
此外,目前的SSL证书密钥一般是直接存储在web服务器的硬盘上,容易泄露,SSL证书密钥中的SSL证书私钥本身虽然不直接用来加密数据内容,而是用来协商算法、安全交换会话密钥,但SSL证书私钥泄露会导致加密会话的密钥泄露,进而造成网站数据泄露,因此,需要提高SSL证书密钥的安全性。
发明内容
本申请的目的在于提供一种双SSL证书web服务器设置方法和web服务系统,能够同时适配非国密浏览器和国密浏览器的应用,并提高SSL证书密钥的安全性。
第一方面,本申请提供了一种双SSL证书web服务器设置方法,包括步骤:
在web服务器中设置双SSL证书配置模块,以用于向证书授权中心申请获取SSL证书和对应的密钥文件,把所述SSL证书存储于所述web服务器,并把所述密钥文件发送至独立于所述web服务器的密码卡;所述SSL证书包括国际算法证书和国密算法证书;
在所述web服务器中设置自适应模块,以用于根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现所述web服务器与所述客户端浏览器的加密通信;
在所述web服务器中设置基于Engine机制的密码卡调用模块,以用于根据所述自适应模块所选择使用的加密算法从所述密码卡调用对应的密钥文件来实现所述web服务器与所述客户端浏览器的加密通信。
通过在web服务器中配置国际算法证书和国密算法证书两种SSL证书,并根据客户端浏览器具体支持的加密算法(ClientHello消息中包含客户端浏览器的加密算法套件列表,从中可确定客户端浏览器具体支持的加密算法)自动选择对应的加密算法与客户端浏览器进行加密通信,能够同时适配非国密浏览器和国密浏览器的应用,把密钥文件存储在独立的密码卡中,并在需要时进行调用,与直接把密钥文件存储在web服务器相比,更不容易泄露,提高了SSL证书密钥的安全性。
优选地,所述自适应模块在根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现所述web服务器与所述客户端浏览器的加密通信的时候,执行:
根据客户端浏览器发送的ClientHello消息选择要使用的加密算法;
把选择使用的加密算法对应的SSL版本数据和算法套件包含在所述web服务器回复给所述客户端浏览器的ServerHello报文中;
把选择使用的加密算法对应的SSL证书包含在所述web服务器回复给所述客户端浏览器的Certificate报文中。
通过把选择使用的加密算法对应的SSL版本数据和算法套件包含在ServerHello报文中,以与客户端浏览器协商决定使用的加密算法,通过把选择使用的加密算法对应的SSL证书包含在Certificate报文中,以便于客户端浏览器使用该SSL证书与web服务器进行加密通信。
优选地,所述自适应模块在根据客户端浏览器发送的ClientHello消息选择要使用的加密算法的时候,执行:
若同时满足以下三个条件,则选择使用国密算法,否则,选择使用国际算法:
条件一:所述客户端浏览器发送的ClientHello消息包含的SSL版本数据为对应于国密算法的第一SSL版本数据;
条件二:所述客户端浏览器发送的ClientHello消息包含的加密算法套件列表中包括国密算法套件;
条件三:所述web服务器中已存储有国密算法证书。
优选地,所述在所述web服务器中设置自适应模块的步骤包括:
在所述web服务器中设置GmSSL组件;
对所述GmSSL组件的tls_process_client_hello(SSL *s, PACKET *pkt)代码进行修改,得到所述自适应模块。
GmSSL组件是一个开源的密码工具箱,支持多种国密算法,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用,且与OpenSSL组件保持接口兼容,因此,GmSSL组件可以替代web服务器中常用的OpenSSL组件,并使web服务器自动具备基于国密的安全能力,现有的GmSSL组件通常仅适用单一证书(国密证书或国际证书),此处,通过对现有的GmSSL组件进行代码修改实现双SSL证书自适应功能。
优选地,所述国际算法为国际RSA算法,所述国际算法证书为国际RSA证书,所述国密算法为国密SM2算法,所述国密算法证书为国密SM2证书。
优选地,所述在所述web服务器中设置基于Engine机制的密码卡调用模块的步骤包括:
创建Engine结构体指针;
为所述Engine结构体指针设置id和名称;
为所述Engine结构体指针设置生命周期函数;
对所述GmSSL组件的RSA函数和EC函数进行替换,并为所述Engine结构体指针设置替换后的函数;
为所述Engine结构体指针设置用于加载私钥的函数;
把所述Engine结构体指针添加到所述GmSSL组件中,得到所述基于Engine机制的密码卡调用模块。
优选地,对所述GmSSL组件的RSA函数进行替换包括对所述RSA函数的私钥加密函数进行替换;
对所述GmSSL组件的EC函数进行替换包括基于SM2函数对所述EC函数的签名函数和解密函数进行替换。
优选地,所述把所述Engine结构体指针添加到所述GmSSL组件中的步骤包括:
在所述GmSSL组件的主程序中加入所述Engine结构体指针的主函数;
把所述Engine结构体指针编译成gdca_engine.so文件;
在所述GmSSL组件的openssl.cnf文件的末尾添加附加代码;
在所述GmSSL组件的nginx.conf文件中配置所述Engine结构体指针、所述SSL证书和对应的密钥。
第二方面,本申请提供了一种web服务系统,包括客户端浏览器、web服务器、证书授权中心、网站和密码卡,所述客户端浏览器、证书授权中心、所述网站和所述密码卡均与所述web服务器通信连接;
所述web服务器设置有双SSL证书配置模块、自适应模块和基于Engine机制的密码卡调用模块;
所述双SSL证书配置模块用于向证书授权中心申请获取SSL证书和对应的密钥文件,把所述SSL证书存储于所述web服务器,并把所述密钥文件发送至所述密码卡;所述SSL证书包括国际算法证书和国密算法证书;
所述自适应模块用于在所述客户端浏览器通过所述web服务器访问所述网站时,根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现所述web服务器与所述客户端浏览器的加密通信;
所述基于Engine机制的密码卡调用模块用于根据所述自适应模块所选择使用的加密算法从所述密码卡调用对应的密钥文件来实现所述web服务器与所述客户端浏览器的加密通信。
通过在web服务器中配置国际算法证书和国密算法证书两种SSL证书,并根据客户端浏览器具体支持的加密算法(ClientHello消息中包含客户端浏览器的加密算法套件列表,从中可确定客户端浏览器具体支持的加密算法)自动选择对应的加密算法与客户端浏览器进行加密通信,能够同时适配非国密浏览器和国密浏览器的应用,把密钥文件存储在独立的密码卡中,并在需要时进行调用,与直接把密钥文件存储在web服务器相比,更不容易泄露,提高了SSL证书密钥的安全性。
优选地,所述双SSL证书配置模块、所述自适应模块和所述基于Engine机制的密码卡调用模块根据前文所述的双SSL证书web服务器设置方法设置。
有益效果:本申请提供的双SSL证书web服务器设置方法和web服务系统,通过在web服务器中配置国际算法证书和国密算法证书两种SSL证书,并根据客户端浏览器具体支持的加密算法自动选择对应的加密算法与客户端浏览器进行加密通信,能够同时适配非国密浏览器和国密浏览器的应用,把密钥文件存储在独立的密码卡中,并在需要时进行调用,与直接把密钥文件存储在web服务器相比,更不容易泄露,提高了SSL证书密钥的安全性。
附图说明
图1为本申请实施例提供的双SSL证书web服务器设置方法的流程图。
图2为本申请实施例提供的web服务系统的结构示意图。
标号说明:1、客户端浏览器;2、web服务器;201、双SSL证书配置模块;202、自适应模块;203、基于Engine机制的密码卡调用模块;3、证书授权中心;4、网站;5、密码卡。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1是本申请一些实施例中的一种双SSL证书web服务器设置方法,包括步骤:
A1.在web服务器中设置双SSL证书配置模块,以用于向证书授权中心申请获取SSL证书和对应的密钥文件(其中包括SSL证书公钥和SSL证书私钥),把SSL证书存储于web服务器,并把密钥文件发送至独立于web服务器的密码卡;SSL证书包括国际算法证书和国密算法证书;
A2.在web服务器中设置自适应模块,以用于根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现web服务器与客户端浏览器的加密通信;
A3.在web服务器中设置基于Engine机制的密码卡调用模块,以用于根据自适应模块所选择使用的加密算法从密码卡调用对应的密钥文件来实现web服务器与客户端浏览器的加密通信。
通过在web服务器中配置国际算法证书和国密算法证书两种SSL证书,并根据客户端浏览器具体支持的加密算法(ClientHello消息中包含客户端浏览器的加密算法套件列表,从中可确定客户端浏览器具体支持的加密算法)自动选择对应的加密算法与客户端浏览器进行加密通信,能够同时适配非国密浏览器和国密浏览器的应用,把密钥文件存储在独立的密码卡中,并在需要时进行调用,与直接把密钥文件存储在web服务器相比,更不容易泄露,提高了SSL证书密钥的安全性。
其中,双SSL证书配置模块在向证书授权中心申请获取SSL证书和对应的密钥文件的时候,向证书授权中心提交相关申请资料(具体申请资料根据实际需要设置)和对应费用以使证书授权中心根据申请资料生成对应的SSL证书和密钥文件。
实际上,客户端浏览器与web服务器之间的典型交互过程(即SSL协议流程)包括:
(1)客户端浏览器向web服务器发送一个ClientHello消息以发起握手请求;该ClientHello消息通常包括客户端浏览器所支持的SSL版本数据、加密算法套件列表(用于告知web服务器该客户端浏览器支持哪些加密算法)、客户端sessionID和客户端随机数等信息;
(2)web服务器接收到ClientHello消息后向客户端浏览器发送ServerHello报文,以与客户端浏览器协商决定使用的加密算法;该ServerHello报文通常包括选用的加密算法对应的SSL版本数据、服务器sessionID、选用的加密算法套件和服务器随机数等信息;
(3)经过ServerHello报文确定TLS协议版本和选用的加密算法之后,web服务器向客户端浏览器发送Certificate报文;该Certificate报文中包含SSL证书(SSL证书中包括对应的公钥、签名、证书机构等信息);
(4)web服务器向客户端浏览器发送ServerKeyExchange消息;该ServerKeyExchange消息中包含web服务器的EC Diffie-Hellman算法相关参数;
(5)web服务器向客户端浏览器发送ServerHelloDone消息,以表明端握手消息已经发送完成;
(6)客户端浏览器收到web服务器发来的SSL证书后,验证该SSL证书,判定该SSL证书可信之后,向web服务器发送ClientKeyExchange消息,该ClientKeyExchange消息包含客户端浏览器的EC Diffie-Hellman算法相关参数,然后客户端浏览器和web服务器都根据接收到的对方的EC Diffie-Hellman算法相关参数和自身的EC Diffie-Hellman算法相关参数计算出Premaster secret,为生成会话密钥做准备;
(7)客户端浏览器发送消息告知web服务器开始使用加密方式发送消息;
(8)客户端浏览器使用之前握手过程中获得的服务器随机数、客户端随机数和Premaster secret计算生成会话密钥(master secret)。然后使用该会话密钥加密之前所有收发握手消息的Hash和MAC值,发送给web服务器,以验证加密通信是否可用。web服务器将使用相同的方法生成相同的会话密钥以解密此消息,校验其中的Hash和MAC值;
(9)web服务器发送ChangeCipherSpec消息,通知客户端浏览器此消息以后web服务器会以加密方式发送数据;
(10)web服务器使用会话密钥加密之前所有收发握手消息的Hash和MAC值,发送给客户端浏览器去校验。若客户端浏览器和web服务器都校验成功,握手阶段完成,双方将按照SSL记录协议的规范使用协商生成的会话密钥加密发送数据。
从上述过程看,要实现web服务器自动识别客户端浏览器所支持的加密算法,并返回正确的SSL证书,关键在于SSL协议流程的前三个步骤(即步骤(1)-步骤(3))。
在一些优选实施方式中,自适应模块在根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现web服务器与客户端浏览器的加密通信的时候,执行:
根据客户端浏览器发送的ClientHello消息选择要使用的加密算法;
把选择使用的加密算法对应的SSL版本数据和算法套件包含在web服务器回复给客户端浏览器的ServerHello报文中;
把选择使用的加密算法对应的SSL证书包含在web服务器回复给客户端浏览器的Certificate报文中。
通过把选择使用的加密算法对应的SSL版本数据和算法套件包含在ServerHello报文中,以与客户端浏览器协商决定使用的加密算法,通过把选择使用的加密算法对应的SSL证书包含在Certificate报文中,以便于客户端浏览器使用该SSL证书与web服务器进行加密通信。
进一步地,自适应模块在根据客户端浏览器发送的ClientHello消息选择要使用的加密算法的时候,执行:
若同时满足以下三个条件,则选择使用国密算法,否则,选择使用国际算法:
条件一:客户端浏览器发送的ClientHello消息包含的SSL版本数据为对应于国密算法的第一SSL版本数据;
条件二:客户端浏览器发送的ClientHello消息包含的加密算法套件列表中包括国密算法套件;
条件三:web服务器中已存储有国密算法证书。
其中,非国密浏览器和国密浏览器发送的ClientHello消息包含的SSL版本数据根据实际情况设置,例如,对于非国密浏览器,其发送的ClientHello消息包含的SSL版本数据可以为TLS1.0,对于国密浏览器,其发送的ClientHello消息包含的SSL版本数据可以为GMTLS(此时,第一SSL版本数据为GMTLS);但不限于此。
为了实现自适应模块的上述功能,具体地,在web服务器中设置自适应模块的步骤包括:
在web服务器中设置GmSSL组件;
对GmSSL组件的tls_process_client_hello(SSL *s, PACKET *pkt)代码进行修改,得到自适应模块。
GmSSL组件是一个开源的密码工具箱,支持多种国密算法,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用,且与OpenSSL组件保持接口兼容,因此,GmSSL组件可以替代web服务器中常用的OpenSSL组件,并使web服务器自动具备基于国密的安全能力,现有的GmSSL组件通常仅适用单一证书(国密证书或国际证书),此处,通过对现有的GmSSL组件进行代码修改实现双SSL证书自适应功能。
具体地,可以但不限于基于以下伪代码对GmSSL组件的tls_process_client_hello(SSL *s, PACKET *pkt)代码进行修改:
Figure SMS_1
其中,国际算法和国密算法的具体算法类型,可根据实际需要设置,以下以国际算法为国际RSA算法、国密算法为国密SM2算法为例进行说明。从而,国际算法证书对应为国际RSA证书,国密算法证书对应为国密SM2证书。
在一些实施方式中,在web服务器中设置基于Engine机制的密码卡调用模块的步骤包括:
创建Engine结构体指针;
为Engine结构体指针设置id和名称(name);
为Engine结构体指针设置生命周期函数;
对GmSSL组件的RSA函数和EC函数进行替换,并为Engine结构体指针设置替换后的函数;
为Engine结构体指针设置用于加载私钥的函数;
把Engine结构体指针添加到GmSSL组件中,得到基于Engine机制的密码卡调用模块。
例如,通过以下代码创建Engine结构体指针:
ENGINE_new()。
例如,通过以下代码为Engine结构体指针设置id和名称:
ENGINE_set_id(e, engine_id);
ENGINE_set_name(e, engine_name)。
例如,通过以下代码为Engine结构体指针设置生命周期函数:
ENGINE_set_init_function(e, engine_init);
ENGINE_set_finish_function(e, engine_finish);
ENGINE_set_destroy_function(e, engine_destroy)。
例如,对GmSSL组件的RSA函数进行替换包括对RSA函数的私钥加密函数进行替换;
对GmSSL组件的EC函数进行替换包括基于SM2函数对EC函数的签名函数和解密函数进行替换。
由于TLS握手流程中,web服务器涉及调用私钥的函数是签名函数以及私钥加密函数,签名函数内部会对数据编码后调用私钥加密,所以RSA函数需要替换的部分为私钥加密函数。
由于GMTLS握手流程中,web服务端涉及调用私钥的函数是签名函数以及加密函数,所以SM2函数需要替换的部分为签名函数以及解密函数,而GMSSL不支持直接替换SM2相关函数,只支持替换EC函数,因此需要根据源码中调用EC函数的方式在源码中修改SM2相关函数调用方式。
进一步地,可通过以下代码为Engine结构体指针设置替换后的函数:
ENGINE_set_EC(e, ec_method);
ENGINE_set_RSA(e, rsa_method)。
其中,对RSA函数的私钥加密函数进行替换,具体包括:
通过以下代码,基于RSA默认函数创建rsa_method:
RSA_meth_dup(RSA_get_default_method());
通过以下代码实现调用加密机的私钥加密函数:
gdca_rsa_priv_enc;
通过以下代码替换私钥加密函数:
RSA_meth_set_priv_enc(rsa_method, gdca_rsa_priv_enc)。
其中,基于SM2函数对EC函数的签名函数和解密函数进行替换,具体包括:
通过以下代码,基于EC_KEY默认函数创建ec_method:
EC_KEY_METHOD_new(EC_KEY_OpenSSL());
通过以下但实现调用加密机的SM2签名函数:
gdca_sm2_sign;
通过以下代码替换SM2签名函数和SM2解密函数:
EC_KEY_METHOD_set_sign(ec_method, gdca_sm2_sign);
EC_KEY_METHOD_set_decrypt(ec_method, gdca_sm2_decrypt)。
例如,通过以下代码为Engine结构体指针设置用于加载私钥的函数:
ENGINE_set_load_privkey_function(e, engine_load_prikey)。
其中,engine_load_prikey函数的输入参数keyid,包含密钥类型、密钥序号(加密卡密钥序号)和SDF库地址(该SDF库地址遵循《密码设备应用接口规范-GMT 0018-2012》),该engine_load_prikey函数被调用时,首先根据SDF库地址加载SDF库,然后打开设备和打开会话,并确保只调用一次,接着根据keyid设置加密机SM2密钥序号或加密机RSA密钥序号,最后根据加密机SM2密钥序号或加密机RSA密钥序号,以及密钥类型导出对应的公钥。
例如,把Engine结构体指针添加到GmSSL组件中的步骤包括:
在GmSSL组件的主程序中加入Engine结构体指针的主函数;
把Engine结构体指针编译成gdca_engine.so文件;
在GmSSL组件的openssl.cnf文件的末尾添加附加代码;
在GmSSL组件的nginx.conf文件中配置Engine结构体指针、SSL证书和对应的密钥。
其中,可通过以下代码在GmSSL组件的主程序中加入Engine结构体指针的主函数:
ENGINE_add(engine);
ENGINE_free(engine)。
其中,该附加代码可以为:
Figure SMS_2
其中,在nginx.conf文件配置Engine结构体指针、SSL证书和对应的密钥是为了实现调用密码卡中的密钥,通过在nginx.conf文件中添加以下代码以配置Engine结构体指针、SSL证书和对应的密钥:
Figure SMS_3
其中,libZaykMmkSDF.so为密码卡的SDF库。
参考图2,本申请提供了一种web服务系统,包括客户端浏览器1、web服务器2、证书授权中心3、网站4和密码卡5,客户端浏览器1、证书授权中心3、网站4和密码卡5均与web服务器2通信连接;
web服务器2设置有双SSL证书配置模块201、自适应模块202和基于Engine机制的密码卡调用模块203;
双SSL证书配置模块201用于向证书授权中心3申请获取SSL证书和对应的密钥文件(其中包括SSL证书公钥和SSL证书私钥),把SSL证书存储于web服务器2,并把密钥文件发送密码卡5;SSL证书包括国际算法证书和国密算法证书;
自适应模块202用于在客户端浏览器1通过web服务器2访问网站4时,根据客户端浏览器1发送的ClientHello消息选择使用国际算法或国密算法来实现web服务器2与客户端浏览器1的加密通信;
基于Engine机制的密码卡调用模块203用于根据自适应模块202所选择使用的加密算法从密码卡5调用对应的密钥文件来实现web服务器2与客户端浏览器1的加密通信。
通过在web服务器2中配置国际算法证书和国密算法证书两种SSL证书,并根据客户端浏览器1具体支持的加密算法(ClientHello消息中包含客户端浏览器1的加密算法套件列表,从中可确定客户端浏览器1具体支持的加密算法)自动选择对应的加密算法与客户端浏览器1进行加密通信,能够同时适配非国密浏览器和国密浏览器的应用,把密钥文件存储在独立的密码卡5中,并在需要时进行调用,与直接把密钥文件存储在web服务器2相比,更不容易泄露,提高了SSL证书密钥的安全性。
其中,客户端浏览器1的数量一般为多个,各客户端浏览器1可以为非国密浏览器或国密浏览器。
优选地,双SSL证书配置模块201、自适应模块202和基于Engine机制的密码卡调用模块203根据前文的双SSL证书web服务器设置方法设置。
综上,该双SSL证书web服务器设置方法和web服务系统具有以下优点:
1)基于GmSSL对其代码的修改使其实现双证的自适应,解决了目前web服务器的单一性问题(即仅支持国密算法和国际算法中的一种的问题);
2)对于不同的web服务器不同的应用环境,仅需重新编译,即可满足要求,具有更好的扩展性;
3)将SSL证书密钥(尤其是SSL证书私钥)直接存放于密码卡,解决了密钥的安全性,提高了整个系统的安全性,特别适合对于高度敏感、机密应用服务器。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种双SSL证书web服务器设置方法,其特征在于,包括步骤:
在web服务器中设置双SSL证书配置模块,以用于向证书授权中心申请获取SSL证书和对应的密钥文件,把所述SSL证书存储于所述web服务器,并把所述密钥文件发送至独立于所述web服务器的密码卡;所述SSL证书包括国际算法证书和国密算法证书;
在所述web服务器中设置自适应模块,以用于根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现所述web服务器与所述客户端浏览器的加密通信;
在所述web服务器中设置基于Engine机制的密码卡调用模块,以用于根据所述自适应模块所选择使用的加密算法从所述密码卡调用对应的密钥文件来实现所述web服务器与所述客户端浏览器的加密通信。
2.根据权利要求1所述的双SSL证书web服务器设置方法,其特征在于,所述自适应模块在根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现所述web服务器与所述客户端浏览器的加密通信的时候,执行:
根据客户端浏览器发送的ClientHello消息选择要使用的加密算法;
把选择使用的加密算法对应的SSL版本数据和算法套件包含在所述web服务器回复给所述客户端浏览器的ServerHello报文中;
把选择使用的加密算法对应的SSL证书包含在所述web服务器回复给所述客户端浏览器的Certificate报文中。
3.根据权利要求2所述的双SSL证书web服务器设置方法,其特征在于,所述自适应模块在根据客户端浏览器发送的ClientHello消息选择要使用的加密算法的时候,执行:
若同时满足以下三个条件,则选择使用国密算法,否则,选择使用国际算法:
条件一:所述客户端浏览器发送的ClientHello消息包含的SSL版本数据为对应于国密算法的第一SSL版本数据;
条件二:所述客户端浏览器发送的ClientHello消息包含的加密算法套件列表中包括国密算法套件;
条件三:所述web服务器中已存储有国密算法证书。
4.根据权利要求3所述的双SSL证书web服务器设置方法,其特征在于,所述在所述web服务器中设置自适应模块的步骤包括:
在所述web服务器中设置GmSSL组件;
对所述GmSSL组件的tls_process_client_hello(SSL *s, PACKET *pkt)代码进行修改,得到所述自适应模块。
5.根据权利要求4所述的双SSL证书web服务器设置方法,其特征在于,所述国际算法为国际RSA算法,所述国际算法证书为国际RSA证书,所述国密算法为国密SM2算法,所述国密算法证书为国密SM2证书。
6.根据权利要求5所述的双SSL证书web服务器设置方法,其特征在于,所述在所述web服务器中设置基于Engine机制的密码卡调用模块的步骤包括:
创建Engine结构体指针;
为所述Engine结构体指针设置id和名称;
为所述Engine结构体指针设置生命周期函数;
对所述GmSSL组件的RSA函数和EC函数进行替换,并为所述Engine结构体指针设置替换后的函数;
为所述Engine结构体指针设置用于加载私钥的函数;
把所述Engine结构体指针添加到所述GmSSL组件中,得到所述基于Engine机制的密码卡调用模块。
7.根据权利要求6所述的双SSL证书web服务器设置方法,其特征在于,对所述GmSSL组件的RSA函数进行替换包括对所述RSA函数的私钥加密函数进行替换;
对所述GmSSL组件的EC函数进行替换包括基于SM2函数对所述EC函数的签名函数和解密函数进行替换。
8.根据权利要求6所述的双SSL证书web服务器设置方法,其特征在于,所述把所述Engine结构体指针添加到所述GmSSL组件中的步骤包括:
在所述GmSSL组件的主程序中加入所述Engine结构体指针的主函数;
把所述Engine结构体指针编译成gdca_engine.so文件;
在所述GmSSL组件的openssl.cnf文件的末尾添加附加代码;
在所述GmSSL组件的nginx.conf文件中配置所述Engine结构体指针、所述SSL证书和对应的密钥。
9.一种web服务系统,其特征在于,包括客户端浏览器、web服务器、证书授权中心、网站和密码卡,所述客户端浏览器、证书授权中心、所述网站和所述密码卡均与所述web服务器通信连接;
所述web服务器设置有双SSL证书配置模块、自适应模块和基于Engine机制的密码卡调用模块;
所述双SSL证书配置模块用于向证书授权中心申请获取SSL证书和对应的密钥文件,把所述SSL证书存储于所述web服务器,并把所述密钥文件发送至所述密码卡;所述SSL证书包括国际算法证书和国密算法证书;
所述自适应模块用于在所述客户端浏览器通过所述web服务器访问所述网站时,根据客户端浏览器发送的ClientHello消息选择使用国际算法或国密算法来实现所述web服务器与所述客户端浏览器的加密通信;
所述基于Engine机制的密码卡调用模块用于根据所述自适应模块所选择使用的加密算法从所述密码卡调用对应的密钥文件来实现所述web服务器与所述客户端浏览器的加密通信。
10.根据权利要求9所述的web服务系统,其特征在于,所述双SSL证书配置模块、所述自适应模块和所述基于Engine机制的密码卡调用模块根据权利要求1-8任一项所述的双SSL证书web服务器设置方法设置。
CN202310400346.XA 2023-04-14 2023-04-14 双SSL证书web服务器设置方法和web服务系统 Pending CN116366262A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310400346.XA CN116366262A (zh) 2023-04-14 2023-04-14 双SSL证书web服务器设置方法和web服务系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310400346.XA CN116366262A (zh) 2023-04-14 2023-04-14 双SSL证书web服务器设置方法和web服务系统

Publications (1)

Publication Number Publication Date
CN116366262A true CN116366262A (zh) 2023-06-30

Family

ID=86933304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310400346.XA Pending CN116366262A (zh) 2023-04-14 2023-04-14 双SSL证书web服务器设置方法和web服务系统

Country Status (1)

Country Link
CN (1) CN116366262A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118473677A (zh) * 2024-07-09 2024-08-09 济南浪潮数据技术有限公司 安全认证的方法、装置、计算机设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118473677A (zh) * 2024-07-09 2024-08-09 济南浪潮数据技术有限公司 安全认证的方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
US11985239B2 (en) Forward secrecy in transport layer security (TLS) using ephemeral keys
US9137017B2 (en) Key recovery mechanism
US8291231B2 (en) Common key setting method, relay apparatus, and program
WO2017045552A1 (zh) 一种在ssl或tls通信中加载数字证书的方法和装置
EP2173055A1 (en) A method, a system, a client and a server for key negotiating
CN109302369B (zh) 一种基于密钥验证的数据传输方法及装置
CN104580189A (zh) 一种安全通信系统
US20050010757A1 (en) Public-key infrastructure in network management
EP3232632A1 (en) Method and system for acquiring plaintext of network secret data
KR20060081337A (ko) 비밀키를 이용한 암호화 및 복호화 방법
CN115314214B (zh) 一种基于支持硬件加速国密算法的tls协议实现方法
CN112422507A (zh) 一种基于标识算法的国密ssl加密方法
CN113572740A (zh) 一种基于国密的云管理平台认证加密方法
CN110581829A (zh) 通信方法及装置
CN116366262A (zh) 双SSL证书web服务器设置方法和web服务系统
CN114650181B (zh) 电子邮件加解密方法、系统、设备及计算机可读存储介质
CN113422753B (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN115001705B (zh) 一种基于加密设备的网络协议安全提升方法
CN114039793B (zh) 一种加密通信方法、系统及存储介质
CN113676468B (zh) 一种基于消息验证技术的三方增强认证系统设计方法
Gilchrist The Concise Guide to SSL/TLS for DevOps
Natusch Authentication in mTLS with Decentralized Identifiers and Verifiable Credentials
KR20240129914A (ko) 모바일 단말 보안 강화 장치 및 방법
CN116800499A (zh) 加密数据的传输方法及装置、设备和存储介质
CN118921209A (zh) Https网络通信加密方法、系统、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination