CN113596046A - 一种双向认证方法及装置 - Google Patents
一种双向认证方法及装置 Download PDFInfo
- Publication number
- CN113596046A CN113596046A CN202110888199.6A CN202110888199A CN113596046A CN 113596046 A CN113596046 A CN 113596046A CN 202110888199 A CN202110888199 A CN 202110888199A CN 113596046 A CN113596046 A CN 113596046A
- Authority
- CN
- China
- Prior art keywords
- server
- random number
- client
- certificate
- password
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0869—Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种双向认证方法及装置,包括:接收服务端响应认证请求发送的服务端证书、第二随机数、目标密码套件和服务端公钥,若检查到服务端证书为预设签发机构签发,获取服务端证书中的数据,若与服务端提供的一致,生成第三随机数,并通过预设的密钥交换算法,生成第一主通讯密码;利用服务端公钥对第三随机数进行加密,得到加密后的第三随机数,并利用第一主通讯密码和目标密码套件,生成客户端通讯密文;将加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;接收到服务端返回的服务端通讯密文后,根据第一主通讯密码和目标密码套件,对服务端通讯密文进行解密,若服务端通讯密文中携带的数据未被篡改,确认双向认证通过。
Description
技术领域
本申请涉及网络安全领域,具体而言,涉及一种双向认证方法及装置。
背景技术
Nginx(enginex)是一个高性能、轻量级的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,在BSD-like协议下发行。其特点是占有内存少,并发能力强,使用OpenSSL生成服务端证书。
客户端在访问Nginx时,向Nginx发送认证请求,Nginx将服务端证书传输至客户端,客户端在验证服务端证书后,接入Nginx,与Nginx进行通信。但该认证方法,客户端利用Https协议对服务端进行安全访问的单向认证,由于服务端不对客户端进行认证,会导致一些恶意客户端频繁访问服务端,对服务端发起恶意web攻击,降低了服务端的安全性,也导致服务端性能下降。
发明内容
有鉴于此,本申请的目的在于提供一种双向认证方法及装置,以提高代理服务器的安全性。
第一方面,本申请实施例提供了一种双向认证方法,应用于客户端,该方法包括:
将认证请求发送至服务端;所述认证请求携带有第一随机数和所述客户端支持的客户端密码套件;
接收所述服务端响应所述认证请求发送的服务端证书、第二随机数、从所述客户端密码套件中选取的目标密码套件和服务端公钥,并检查所述服务端证书是否为预设签发机构签发;
若所述服务端证书为所述预设签发机构签发,获取所述服务端证书中的域名和服务端证书公钥,判断是否与对应的预先存储的所述服务端的域名和接收的所述服务端公钥一致;
若均一致,生成第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码;
利用所述服务端公钥对所述第三随机数进行加密,得到加密后的第三随机数,并利用所述第一主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文;
将所述加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;
接收到所述服务端返回的服务端通讯密文后,根据所述第一主通讯密码和目标密码套件,对所述服务端通讯密文进行解密,验证解密后的所述服务端通讯密文中携带的第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书是否被篡改;
若均未被篡改,向所述服务端发送双向认证通过信息。
在一些实施例中,该方法还包括:
若所述服务端证书不为所述预设签发机构签发,则生成警告信息,并通知所述客户端的用户;
若接收到所述用户输入的继续认证指令,执行所述获取所述服务端证书中的域名和服务端证书公钥的步骤。
在一些实施例中,所述通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码,包括:所述预设的密钥交换算法包括迪菲赫尔曼算法;
将所述第一随机数、第二随机数和第三随机数输入到迪菲赫尔曼算法中,得到第一主通讯密码。
在一些实施例中,该方法还包括:
通过所述目标密码套件和第一主通讯密码,对将发送至所述服务端的通讯数据进行加密,生成客户端加密通讯数据;
将所述客户端加密通讯数据发送至所述服务端。
第二方面,本申请实施例提供了一种双向认证方法,应用于服务端,包括:
接收客户端发送的携带有第一随机数和客户端密码套件的认证请求,根据所述客户端密码套件,确定目标密码套件,并将服务端证书、第二随机数、目标密码套件和服务端公钥发送至所述客户端;
接收所述客户端发送的加密后的第三随机数、客户端证书和客户端通讯密文;
根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法;
若所述客户端证书合法,利用服务端私钥对所述加密后的第三随机数进行解密,得到第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第二主通讯密码;
根据所述第二主通讯密码和目标密码套件,对所述客户端通讯密文进行解密,验证解密后的所述客户端通讯密文中携带的第一随机数、第二随机数、服务端证书和服务端公钥是否被篡改;
若均未被篡改,利用所述第二主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,生成服务端通讯密文,并将所述服务端通讯密文发送至客户端;
接收所述服务端发送的双向认证通过信息,确认与客户端的双向认证通过。
在一些实施例中,所述根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法,包括:
检验所述客户端证书是否在证书废止列表中、使用日期是否在有效期内、签发机构是否可靠、签发机构签名与签发机构公钥是否匹配。
第三方面,本申请实施例提供了一种双向认证装置,应用于客户端,包括:
第一发送模块,用于将认证请求发送至服务端;所述认证请求携带有第一随机数和所述客户端支持的客户端密码套件;
第一分析模块,用于接收所述服务端响应所述认证请求发送的服务端证书、第二随机数、从所述客户端密码套件中选取的目标密码套件和服务端公钥,并检查所述服务端证书是否为预设签发机构签发;
第二分析模块,用于若所述服务端证书为所述预设签发机构签发,获取所述服务端证书中的域名和服务端证书公钥,判断是否与对应的预先存储的所述服务端的域名和接收的所述服务端公钥一致;
第一生成模块,用于若均一致,生成第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码;
第二生成模块,用于利用所述服务端公钥对所述第三随机数进行加密,得到加密后的第三随机数,并利用所述第一主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文;将所述加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;
第一认证模块,用于接收到所述服务端返回的服务端通讯密文后,根据所述第一主通讯密码和目标密码套件,对所述服务端通讯密文进行解密,验证解密后的所述服务端通讯密文中携带的第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书是否被篡改;若均未被篡改,向所述服务端发送双向认证通过信息。
第四方面,本申请实施例提供了一种双向认证装置,应用于服务端,包括:
第二发送模块,用于接收客户端发送的携带有第一随机数和客户端密码套件的认证请求,根据所述客户端密码套件,确定目标密码套件,并将服务端证书、第二随机数、目标密码套件和服务端公钥发送至所述客户端;
验证模块,用于接收所述客户端发送的加密后的第三随机数、客户端证书和客户端通讯密文;根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法;
第三生成模块,用于若所述客户端证书合法,利用服务端私钥对所述加密后的第三随机数进行解密,得到第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第二主通讯密码;
第二认证模块,用于根据所述第二主通讯密码和目标密码套件,对所述客户端通讯密文进行解密,验证解密后的所述客户端通讯密文中携带的第一随机数、第二随机数、服务端证书和服务端公钥是否被篡改;若均未被篡改,利用所述第二主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,生成服务端通讯密文,并将所述服务端通讯密文发送至客户端;
确认模块,用于接收所述服务端发送的双向认证通过信息,确认与客户端的双向认证通过。
第五方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面或第二方面中任一项所述的方法的步骤。
第六方面,本申请实施例提供饿了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面或第二方面中任一项所述的方法的步骤。
本申请实施例提出的一种双向认证方法,通过OpenSSL生成服务端和客户端两套证书,通过Nginx插件及配置实现服务端证书加载认证,通过Java代码实现客户端证书加载认证,浏览器配置加载证书,最终实现通过客户端Https的页面双向认证访问、Java客户端的Https接口双向认证访问、及Nginx正向代理的Https接出访问。本申请实施例所提出的一种双向认证方法,实现了服务端与客户端之间的双向认证,从而提升了Nginx服务器的通信安全性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种双向认证方法的流程示意图;
图2为本申请实施例提供的又一种双向认证方法的流程示意图;
图3为本申请实施例提供的一种双向认证装置的结构示意图;
图4为本申请实施例提供的又一种双向认证装置的结构示意图;
图5为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种双向认证方法,如图1所示,包括以下步骤:
步骤S101、将认证请求发送至服务端;上述认证请求携带有第一随机数和上述客户端支持的客户端密码套件;
步骤S102、接收上述服务端响应上述认证请求发送的服务端证书、第二随机数、从上述客户端密码套件中选取的目标密码套件和服务端公钥,并检查上述服务端证书是否为预设签发机构签发;
步骤S103、若上述服务端证书为上述预设签发机构签发,获取上述服务端证书中的域名和服务端证书公钥,判断是否与对应的预先存储的上述服务端的域名和接收的上述服务端公钥一致;
步骤S104、若均一致,生成第三随机数,并通过预设的密钥交换算法,对上述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码;
步骤S105、利用上述服务端公钥对上述第三随机数进行加密,得到加密后的第三随机数,并利用上述第一主通讯密码和目标密码套件,对上述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文;
步骤S106、将上述加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;
步骤S107、接收到上述服务端返回的服务端通讯密文后,根据上述第一主通讯密码和目标密码套件,对上述服务端通讯密文进行解密,验证解密后的上述服务端通讯密文中携带的第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书是否被篡改;
步骤S108、若均未被篡改,向上述服务端发送双向认证通过信息。
具体地,上述的客户端多是以客户端浏览器的形式存在的。
用户在使用客户端访问服务端时,客户端会先向服务端发送一条认证请求,该认证请求中包含了第一随机数、客户端支持的客户端密码套件以及客户端域名等相关信息。
服务端在接收到认证请求后也会将服务端证书、第二随机数、服务端公钥以及从客户端支持的密码套件中选择的目标密码套件等相关信息反馈给客户端。上述目标密码套件是客户端支持的客户端密码套件中服务端同样支持的密码套件。
客户端在接收了服务端反馈的信息后,通过验证服务端证书是否是客户端信赖的预设签发机构所签发的,确定是否继续执行认证。如果服务端证书是客户端信赖的预设签发机构所签发的,则客户端继续执行认证。
然后,客户端比较服务端证书中的服务端域名、服务端证书公钥等信息是否与服务端反馈的信息中的服务端域名和服务端公钥一致。如果比较结果是一致的,那么客户端认可服务端是合法的。客户端此时生成第三随机数,并通过目标密码套件和服务端公钥对第三随机数进行加密,得到加密后的第三随机数。
客户端将第一随机数、第二随机数和第三随机数输入到预设的算法中,计算得到第一主通讯密码,该第一主通讯密码是在后续客户端与服务端完成双向认证后进行加密通讯时所使用的客户端的通讯密码。
利用上述第一主通讯密码和目标密码套件,对上述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文,并将该条客户端通讯密文发送至服务端。在客户端接收到服务端发送的服务端通讯密文后,客户端使用第一主通讯密码和目标密码套件对服务端通讯密文进行解密,得到第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书,并对这些数据进行验证,确认这些数据是否被篡改,若未被篡改,说明客户端与服务端加密通讯握手成功,客户端向服务端发送双向认证通过信息,并使用第一主通讯密码与服务端进行后续的通讯。
在一些实施例中,该方法还包括:
若上述服务端证书不为上述预设签发机构签发,则生成警告信息,并通知上述客户端的用户;
若接收到上述用户输入的继续认证指令,执行上述获取上述服务端证书中的域名和服务端证书公钥的步骤。
具体地,客户端通过验证服务端证书是否是客户端信赖的预设签发机构所签发的,确定是否继续执行认证。如果服务端证书不是客户端信赖的预设签发机构所签发的,则客户端就生成警告信息展示给用户,告知用户服务端证书不是可以信赖的,让用户决定是否继续执行认证。
如果用户决定继续执行认证,客户端就继续进行后续的服务端证书中的服务端域名、服务端证书公钥等信息的比对。
在一些实施例中,上述步骤S104、通过预设的密钥交换算法,对上述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码,包括:上述预设的密钥交换算法包括迪菲赫尔曼算法;
将上述第一随机数、第二随机数和第三随机数输入到迪菲赫尔曼算法中,得到第一主通讯密码。
具体地,使用DH(Diffie-Hellman,迪菲-赫尔曼)算法进行第一主通讯密码的计算,具体算式为:
enc_key=Fuc(random_A,random_B,pre-master)
其中enc_key为第一主通讯密码,random_A为第一随机数,random_B为第二随机数,pre-master为第三随机数,第三随机数是该算法中生成第一主通讯密码的核心随机数。
在一些实施例中,该方法还包括:
通过上述目标密码套件和第一主通讯密码,对将发送至上述服务端的通讯数据进行加密,生成客户端加密通讯数据;
将上述客户端加密通讯数据发送至上述服务端。
具体地,在完成双向认证后,每次客户端向服务端发送通讯数据时,都使用第一主通讯密码,通过目标密码套件对通讯数据进行加密,得到客户端加密通讯数据,然后再将客户端加密通讯数据发送至服务端。
本申请实施例还提供了一种双向认证方法,如图2所示,该方法包括:
步骤S201、接收客户端发送的携带有第一随机数和客户端密码套件的认证请求,根据所述客户端密码套件,确定目标密码套件,并将服务端证书、第二随机数、目标密码套件和服务端公钥发送至所述客户端;
步骤S202、接收所述客户端发送的加密后的第三随机数、客户端证书和客户端通讯密文;
步骤S203、根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法;
步骤S204、若所述客户端证书合法,利用服务端私钥对所述加密后的第三随机数进行解密,得到第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第二主通讯密码;
步骤S205、根据所述第二主通讯密码和目标密码套件,对所述客户端通讯密文进行解密,验证解密后的所述客户端通讯密文中携带的第一随机数、第二随机数、服务端证书和服务端公钥是否被篡改;
步骤S206、若均未被篡改,利用所述第二主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,生成服务端通讯密文,并将所述服务端通讯密文发送至客户端;
步骤S207、接收所述服务端发送的双向认证通过信息,确认与客户端的双向认证通过。
具体地,服务端接收到客户端发送的认证请求后,开始进行与客户端的双向认证。服务端从客户端支持的密码套件中选取自身也支持的密码套件作为目标密码套件,然后将目标密码套件、服务端证书、第二随机数和服务端公钥发送给客户端。
客户端在确认了服务端是可信的之后,服务端会接收到客户端反馈的加密后的第三随机数、客户端证书和客户端通讯密文等相关信息,服务端通过加密后的第三随机数和从预设签发机构获取的信息,来检验客户端证书的合法性。
服务端在检验客户端证书合法后,会通过服务端私钥对加密过的第三随机数进行解密得到第三随机数,并将第三随机数和第一随机数以及第二随机数输入到DH算法中生成第二主通讯密码。该第二主通讯密码是在后续客户端与服务端完成双向认证后进行加密通讯时所使用的服务端的通讯密码。该第二主通讯密码由于和第一主通讯密码使用了同种算法,并且都使用了第一随机数、第二随机数和第三随机数作为输入,因此,第二主通讯密码与第一主通讯密码一致。
服务端使用第二主通讯密码对客户端通讯密文进行解密,得到第一随机数、第二随机数、服务端证书和服务端公钥,服务端检查这些数据是否被篡改。当检查这些数据未被篡改后,使用第二主通讯密码,通过目标密码套件对第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,得到服务端通讯密文,并发送给客户端。
待服务端接收到客户端反馈的双向认证通过信息后,服务端确认与该客户端之间的双向认证完成。
在一些实施例中,上述步骤S203、根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法,包括:
检验所述客户端证书是否在证书废止列表中、使用日期是否在有效期内、签发机构是否可靠、签发机构签名与签发机构公钥是否匹配。
具体地,服务器必须检验客户端证书和数字签名后的第三随机数的合法性,具体的合法性验证过程包括:客户端证书是否还在使用日期内、预设签发机构是否可靠、预设签发机构的公钥能否正确解开客户端证书中的签发机构的数字签名、客户端证书是否在证书废止列表中。
本申请实施例提供了一种双向认证装置,如图3所示,包括:
第一发送模块30,用于将认证请求发送至服务端;所述认证请求携带有第一随机数和所述客户端支持的客户端密码套件;
第一分析模块31,用于接收所述服务端响应所述认证请求发送的服务端证书、第二随机数、从所述客户端密码套件中选取的目标密码套件和服务端公钥,并检查所述服务端证书是否为预设签发机构签发;
第二分析模块32,用于若所述服务端证书为所述预设签发机构签发,获取所述服务端证书中的域名和服务端证书公钥,判断是否与对应的预先存储的所述服务端的域名和接收的所述服务端公钥一致;
第一生成模块33,用于若均一致,生成第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码;
第二生成模块34,用于利用所述服务端公钥对所述第三随机数进行加密,得到加密后的第三随机数,并利用所述第一主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文;将所述加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;
第一认证模块35,用于接收到所述服务端返回的服务端通讯密文后,根据所述第一主通讯密码和目标密码套件,对所述服务端通讯密文进行解密,验证解密后的所述服务端通讯密文中携带的第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书是否被篡改;若均未被篡改,向所述服务端发送双向认证通过信息。
本申请实施例还提供饿了一种双向认证装置,如图4所示,包括:
第二发送模块40,用于接收客户端发送的携带有第一随机数和客户端密码套件的认证请求,根据所述客户端密码套件,确定目标密码套件,并将服务端证书、第二随机数、目标密码套件和服务端公钥发送至所述客户端;
验证模块41,用于接收所述客户端发送的加密后的第三随机数、客户端证书和客户端通讯密文;根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法;
第三生成模块42,用于若所述客户端证书合法,利用服务端私钥对所述加密后的第三随机数进行解密,得到第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第二主通讯密码;
第二认证模块43,用于根据所述第二主通讯密码和目标密码套件,对所述客户端通讯密文进行解密,验证解密后的所述客户端通讯密文中携带的第一随机数、第二随机数、服务端证书和服务端公钥是否被篡改;若均未被篡改,利用所述第二主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,生成服务端通讯密文,并将所述服务端通讯密文发送至客户端;
确认模块44,用于接收所述服务端发送的双向认证通过信息,确认与客户端的双向认证通过。
对应于图1中的一种双向认证方法,本申请实施例还提供了一种计算机设备500,如图5所示,该设备包括存储器501、处理器502及存储在该存储器501上并可在该处理器502上运行的计算机程序,其中,上述处理器502执行上述计算机程序时实现上述一种双向认证方法。
具体地,上述存储器501和处理器502能够为通用的存储器和处理器,这里不做具体限定,当处理器502运行存储器501存储的计算机程序时,能够执行上述一种双向认证方法,解决了现有技术中如何提高代理服务器的安全性的问题。
对应于图1中的一种双向认证方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述一种双向认证方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述一种双向认证方法,解决了现有技术中如何提高代理服务器的安全性的问题,本申请实施例提出的一种双向认证方法,通过OpenSSL生成服务端和客户端两套证书,通过Nginx插件及配置实现服务端证书加载认证,通过Java代码实现客户端证书加载认证,浏览器配置加载证书,最终实现通过客户端Https的页面双向认证访问、Java客户端的Https接口双向认证访问、及Nginx正向代理的Https接出访问。本申请实施例所提出的一种双向认证方法,实现了服务端与客户端之间的双向认证,从而提升了Nginx服务器的通信安全性。
在本申请所提供的实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种双向认证方法,其特征在于,应用于客户端,包括:
将认证请求发送至服务端;所述认证请求携带有第一随机数和所述客户端支持的客户端密码套件;
接收所述服务端响应所述认证请求发送的服务端证书、第二随机数、从所述客户端密码套件中选取的目标密码套件和服务端公钥,并检查所述服务端证书是否为预设签发机构签发;
若所述服务端证书为所述预设签发机构签发,获取所述服务端证书中的域名和服务端证书公钥,判断是否与对应的预先存储的所述服务端的域名和接收的所述服务端公钥一致;
若均一致,生成第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码;
利用所述服务端公钥对所述第三随机数进行加密,得到加密后的第三随机数,并利用所述第一主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文;
将所述加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;
接收到所述服务端返回的服务端通讯密文后,根据所述第一主通讯密码和目标密码套件,对所述服务端通讯密文进行解密,验证解密后的所述服务端通讯密文中携带的第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书是否被篡改;
若均未被篡改,向所述服务端发送双向认证通过信息。
2.如权利要求1所述的双向认证方法,其特征在于,还包括:
若所述服务端证书不为所述预设签发机构签发,则生成警告信息,并通知所述客户端的用户;
若接收到所述用户输入的继续认证指令,执行所述获取所述服务端证书中的域名和服务端证书公钥的步骤。
3.如权利要求1所述的双向认证方法,其特征在于,所述密钥交换算法包括迪菲赫尔曼算法。
4.如权利要求1至3任一项所述的双向认证方法,其特征在于,还包括:
通过所述目标密码套件和第一主通讯密码,对将发送至所述服务端的通讯数据进行加密,生成客户端加密通讯数据;
将所述客户端加密通讯数据发送至所述服务端。
5.一种双向认证方法,其特征在于,应用于服务端,包括:
接收客户端发送的携带有第一随机数和客户端密码套件的认证请求,根据所述客户端密码套件,确定目标密码套件,并将服务端证书、第二随机数、目标密码套件和服务端公钥发送至所述客户端;
接收所述客户端发送的加密后的第三随机数、客户端证书和客户端通讯密文;
根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法;
若所述客户端证书合法,利用服务端私钥对所述加密后的第三随机数进行解密,得到第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第二主通讯密码;
根据所述第二主通讯密码和目标密码套件,对所述客户端通讯密文进行解密,验证解密后的所述客户端通讯密文中携带的第一随机数、第二随机数、服务端证书和服务端公钥是否被篡改;
若均未被篡改,利用所述第二主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,生成服务端通讯密文,并将所述服务端通讯密文发送至客户端;
接收所述服务端发送的双向认证通过信息,确认与客户端的双向认证通过。
6.如权利要求5所述的方法,其特征在于,所述根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法,包括:
检验所述客户端证书是否在证书废止列表中、使用日期是否在有效期内、签发机构是否可靠、签发机构签名与签发机构公钥是否匹配;
若所述客户端证书未在证书废止列表中、使用日期在有效期内、签发机构可靠和签发机构签名与签发机构公钥匹配,确认所述客户端证书合法。
7.一种双向认证装置,其特征在于,应用于客户端,包括:
第一发送模块,用于将认证请求发送至服务端;所述认证请求携带有第一随机数和所述客户端支持的客户端密码套件;
第一分析模块,用于接收所述服务端响应所述认证请求发送的服务端证书、第二随机数、从所述客户端密码套件中选取的目标密码套件和服务端公钥,并检查所述服务端证书是否为预设签发机构签发;
第二分析模块,用于若所述服务端证书为所述预设签发机构签发,获取所述服务端证书中的域名和服务端证书公钥,判断是否与对应的预先存储的所述服务端的域名和接收的所述服务端公钥一致;
第一生成模块,用于若均一致,生成第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第一主通讯密码;
第二生成模块,用于利用所述服务端公钥对所述第三随机数进行加密,得到加密后的第三随机数,并利用所述第一主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书和服务端公钥进行加密,生成客户端通讯密文;将所述加密后的第三随机数、客户端证书和客户端通讯密文发送至服务端;
第一认证模块,用于接收到所述服务端返回的服务端通讯密文后,根据所述第一主通讯密码和目标密码套件,对所述服务端通讯密文进行解密,验证解密后的所述服务端通讯密文中携带的第一随机数、第二随机数、服务端证书、目标密码套件、服务端公钥和客户端证书是否被篡改;若均未被篡改,向所述服务端发送双向认证通过信息。
8.一种双向认证装置,其特征在于,应用于服务端,包括:
第二发送模块,用于接收客户端发送的携带有第一随机数和客户端密码套件的认证请求,根据所述客户端密码套件,确定目标密码套件,并将服务端证书、第二随机数、目标密码套件和服务端公钥发送至所述客户端;
验证模块,用于接收所述客户端发送的加密后的第三随机数、客户端证书和客户端通讯密文;根据所述加密后的第三随机数和预设签发机构,检验所述客户端证书是否合法;
第三生成模块,用于若所述客户端证书合法,利用服务端私钥对所述加密后的第三随机数进行解密,得到第三随机数,并通过预设的密钥交换算法,对所述第一随机数、第二随机数和第三随机数进行运算,生成第二主通讯密码;
第二认证模块,用于根据所述第二主通讯密码和目标密码套件,对所述客户端通讯密文进行解密,验证解密后的所述客户端通讯密文中携带的第一随机数、第二随机数、服务端证书和服务端公钥是否被篡改;若均未被篡改,利用所述第二主通讯密码和目标密码套件,对所述第一随机数、第二随机数、服务端证书、客户端证书和服务端公钥进行加密,生成服务端通讯密文,并将所述服务端通讯密文发送至客户端;
确认模块,用于接收所述服务端发送的双向认证通过信息,确认与客户端的双向认证通过。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1-6中任一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1-6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110888199.6A CN113596046B (zh) | 2021-08-03 | 2021-08-03 | 一种双向认证方法、装置、计算机设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110888199.6A CN113596046B (zh) | 2021-08-03 | 2021-08-03 | 一种双向认证方法、装置、计算机设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113596046A true CN113596046A (zh) | 2021-11-02 |
CN113596046B CN113596046B (zh) | 2022-10-11 |
Family
ID=78254628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110888199.6A Active CN113596046B (zh) | 2021-08-03 | 2021-08-03 | 一种双向认证方法、装置、计算机设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113596046B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070649A (zh) * | 2021-12-15 | 2022-02-18 | 武汉天喻信息产业股份有限公司 | 一种设备间的安全通信方法及*** |
CN114666118A (zh) * | 2022-03-17 | 2022-06-24 | 深圳市同为数码科技股份有限公司 | 基于gdpr规范的双向认证的方法、装置、设备及介质 |
CN114745204A (zh) * | 2022-05-18 | 2022-07-12 | 北京天融信网络安全技术有限公司 | 注册方法和装置 |
CN114745180A (zh) * | 2022-04-11 | 2022-07-12 | 中国南方电网有限责任公司 | 接入认证方法、装置和计算机设备 |
CN114785521A (zh) * | 2022-04-15 | 2022-07-22 | 深圳汇辰软件有限公司 | 认证方法、装置、电子设备及存储介质 |
CN114978751A (zh) * | 2022-06-16 | 2022-08-30 | 东软睿驰汽车技术(沈阳)有限公司 | 业务证书获取方法、装置和电子设备 |
CN115086048A (zh) * | 2022-06-20 | 2022-09-20 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN116055188A (zh) * | 2023-01-28 | 2023-05-02 | 紫光同芯微电子有限公司 | 设备的双向认证方法、双向认证装置及双向认证*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017163612A (ja) * | 2017-06-12 | 2017-09-14 | パナソニックIpマネジメント株式会社 | 端末認証システム、サーバ装置、及び端末認証方法 |
CN110035071A (zh) * | 2019-03-26 | 2019-07-19 | 南瑞集团有限公司 | 一种面向工控***的远程双因子双向认证方法、客户端及服务端 |
CN110380852A (zh) * | 2019-07-22 | 2019-10-25 | 中国联合网络通信集团有限公司 | 双向认证方法及通信*** |
CN111740844A (zh) * | 2020-06-24 | 2020-10-02 | 上海缔安科技股份有限公司 | 基于硬件的国密算法的ssl通信方法及装置 |
-
2021
- 2021-08-03 CN CN202110888199.6A patent/CN113596046B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017163612A (ja) * | 2017-06-12 | 2017-09-14 | パナソニックIpマネジメント株式会社 | 端末認証システム、サーバ装置、及び端末認証方法 |
CN110035071A (zh) * | 2019-03-26 | 2019-07-19 | 南瑞集团有限公司 | 一种面向工控***的远程双因子双向认证方法、客户端及服务端 |
CN110380852A (zh) * | 2019-07-22 | 2019-10-25 | 中国联合网络通信集团有限公司 | 双向认证方法及通信*** |
CN111740844A (zh) * | 2020-06-24 | 2020-10-02 | 上海缔安科技股份有限公司 | 基于硬件的国密算法的ssl通信方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070649A (zh) * | 2021-12-15 | 2022-02-18 | 武汉天喻信息产业股份有限公司 | 一种设备间的安全通信方法及*** |
CN114666118A (zh) * | 2022-03-17 | 2022-06-24 | 深圳市同为数码科技股份有限公司 | 基于gdpr规范的双向认证的方法、装置、设备及介质 |
CN114745180A (zh) * | 2022-04-11 | 2022-07-12 | 中国南方电网有限责任公司 | 接入认证方法、装置和计算机设备 |
CN114785521A (zh) * | 2022-04-15 | 2022-07-22 | 深圳汇辰软件有限公司 | 认证方法、装置、电子设备及存储介质 |
CN114785521B (zh) * | 2022-04-15 | 2024-05-14 | 深圳成谷科技有限公司 | 认证方法、装置、电子设备及存储介质 |
CN114745204A (zh) * | 2022-05-18 | 2022-07-12 | 北京天融信网络安全技术有限公司 | 注册方法和装置 |
CN114978751A (zh) * | 2022-06-16 | 2022-08-30 | 东软睿驰汽车技术(沈阳)有限公司 | 业务证书获取方法、装置和电子设备 |
CN114978751B (zh) * | 2022-06-16 | 2024-01-26 | 东软睿驰汽车技术(沈阳)有限公司 | 业务证书获取方法、装置和电子设备 |
CN115086048A (zh) * | 2022-06-20 | 2022-09-20 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN115086048B (zh) * | 2022-06-20 | 2023-12-15 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN116055188A (zh) * | 2023-01-28 | 2023-05-02 | 紫光同芯微电子有限公司 | 设备的双向认证方法、双向认证装置及双向认证*** |
CN116055188B (zh) * | 2023-01-28 | 2023-07-14 | 紫光同芯微电子有限公司 | 设备的双向认证方法、双向认证装置及双向认证*** |
Also Published As
Publication number | Publication date |
---|---|
CN113596046B (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113596046B (zh) | 一种双向认证方法、装置、计算机设备和计算机可读存储介质 | |
US11588637B2 (en) | Methods for secure cryptogram generation | |
US9847880B2 (en) | Techniques for ensuring authentication and integrity of communications | |
KR101863953B1 (ko) | 전자 서명 서비스 시스템 및 방법 | |
US10523441B2 (en) | Authentication of access request of a device and protecting confidential information | |
CN103078742B (zh) | 数字证书的生成方法和*** | |
CN109981562B (zh) | 一种软件开发工具包授权方法及装置 | |
US20140032906A1 (en) | Cryptographic authentication techniques for mobile devices | |
CN109861813B (zh) | 基于非对称密钥池的抗量子计算https通信方法和*** | |
CN104836784B (zh) | 一种信息处理方法、客户端和服务器 | |
CN110020869B (zh) | 用于生成区块链授权信息的方法、装置及*** | |
US20210241270A1 (en) | System and method of blockchain transaction verification | |
CN113836506A (zh) | 身份认证方法、装置、***、电子设备、存储介质 | |
CN111191218A (zh) | 一种授权认证方法及装置 | |
KR101253683B1 (ko) | 연쇄 해시에 의한 전자서명 시스템 및 방법 | |
CN110868415B (zh) | 远程身份验证方法及装置 | |
JP5278495B2 (ja) | 機器情報送信方法、機器情報送信装置、機器情報送信プログラム | |
CN112583588B (zh) | 一种通信方法及装置、可读存储介质 | |
JP2008234143A (ja) | バイオメトリクスを使用した本人限定メール開封システムおよびその方法ならびにそのためのプログラム | |
CN107241341B (zh) | 访问控制方法及装置 | |
CN112995213B (zh) | 一种安全认证方法及其应用装置 | |
CN115242471A (zh) | 信息传输方法、装置、电子设备及计算机可读存储介质 | |
JP2010028689A (ja) | 公開パラメータ提供サーバ、公開パラメータ提供方法、公開パラメータ提供プログラム、暗号化処理実行装置、暗号化処理実行方法、暗号化処理実行プログラム、署名処理実行装置、署名処理実行方法及び署名処理実行プログラム | |
CN102420798A (zh) | 网络认证***和方法 | |
CN112737790B (zh) | 数据传输方法、装置及服务器、客户终端 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |