首页> 中国专利> 一种实现https双向认证的方法、装置及系统

一种实现https双向认证的方法、装置及系统

摘要

本发明涉及一种实现https双向认证的方法、装置及系统。该方法包括:加载预先构建的信任库;信任库中存有客户端公钥;加载成功后,开启https双向认证功能,以接收客户端发送的https接口的访问请求;访问请求由客户端加载信任库后生成;识别访问请求中的客户端公钥;将访问请求中的客户端公钥与信任库中的客户端公钥进行比对,若比对通过,返回客户端的所需数据。上述方法中客户端与服务端使用代码加载证书进行https交互,提高了认证安全性。

著录项

  • 公开/公告号CN113242239A

    专利类型发明专利

  • 公开/公告日2021-08-10

    原文格式PDF

  • 申请/专利权人 广州欢网科技有限责任公司;

    申请/专利号CN202110505238.X

  • 发明设计人 张康;

    申请日2021-05-10

  • 分类号H04L29/06(20060101);H04L9/32(20060101);H04L29/08(20060101);G06F21/60(20130101);G06F21/62(20130101);

  • 代理机构11471 北京细软智谷知识产权代理有限责任公司;

  • 代理人涂凤琴

  • 地址 510000 广东省广州市番禺区小谷围街中二横路22号A513-A514

  • 入库时间 2023-06-19 12:10:19

说明书

技术领域

本发明涉及网络通信技术领域,具体涉及一种实现https双向认证的方法、装置及系统。

背景技术

在开发和终端有关的项目的时候,往往都需要对数据进行加密,加密效果较好的方式是https的单向认证和双向认证。其中,单向认证是将CA证书挂到服务端;双向认证是需要在服务端和客户端同时挂载CA证书才可以使用。其中双向认证方法的安全指数是最高的。

目前双向认证最常用的做法是:购买服务端CA证书挂载到服务端上,购买客户端CA证书挂载到客户端上,客户端想要访问服务端需要先购买客户端CA证书,并安装才可以对服务端进行访问。

发明内容

有鉴于此,本发明的目的在于克服现有技术的不足,提供一种实现https双向认证的方法、装置及系统。解决了目前只能购买CA证书实现服务端与客户端通信的问题。

为实现以上目的,本发明采用如下技术方案:

一种实现https双向认证的方法,所述方法应用于服务端,所述方法包括:

加载预先构建的信任库;所述信任库中存有客户端公钥;

加载成功后,开启https双向认证功能,以接收客户端发送的https接口的访问请求;所述访问请求由客户端加载所述信任库后生成;

识别所述访问请求中的客户端公钥;

将所述访问请求中的客户端公钥与所述信任库中的客户端公钥进行比对,若比对通过,返回所述客户端的所需数据。

可选的,还包括:

调取keytool,生成所述服务端证书和客户端证书;

将所述服务端证书中的服务端公钥和所述客户端证书中的客户端公钥存入所述信任库中。

可选的,还包括:

发送第二访问请求至所述客户端,并接收所述客户端反馈的目标数据;所述第二访问请求包含所述服务端公钥;所述目标数据由所述客户端验证所述服务端公钥通过后发送。

一种实现https双向认证的方法,所述方法应用于客户端,所述方法包括:

加载预先构建的信任库;所述信任库由服务端调取keytool生成;

获取所述信任库中存储的客户端公钥;

生成包含所述客户端公钥的访问请求;

发送所述访问请求至所述服务端,并接收所述服务端反馈的所需数据;所述所需数据由所述服务端验证所述客户端公钥通过后发送。

可选的,所述信任库还包括:服务端公钥;

还包括:

接收所述客户端发送的第二访问请求;所述第二访问请求包括服务端公钥和目标数据请求;

将所述第二访问请求中的服务端公钥与所述信任库中的服务端公钥进行比对;

比对通过后,依据所述目标数据请求获取目标数据,并发送所述目标数据至所述服务端。

一种实现https双向认证的装置,包括:

第一信任库加载模块,用于加载预先构建的信任库;所述信任库中存有客户端公钥;

客户端访问请求接收模块,用于加载成功后,开启https双向认证功能,以接收客户端发送的https接口的访问请求;

客户端公钥识别模块,用于识别所述访问请求中的客户端公钥;

公钥验证模块,用于将所述访问请求中的客户端公钥与所述信任库中的客户端公钥进行比对,若比对通过,返回所述客户端的所需数据。

可选的,还包括:

证书生成模块,用于调取keytool,生成所述服务端证书和客户端证书;

信任库构建模块,用于将所述服务端证书中的服务端公钥和所述客户端证书中的客户端公钥存入所述信任库中。

一种实现https双向认证的装置,包括:

第二信任库加载模块,用于加载预先构建的信任库;所述信任库由服务端调取keytool生成;

客户端公钥获取模块,用于获取所述信任库中存储的客户端公钥;

客户端访问请求生成模块,用于生成包含所述客户端公钥的访问请求;

客户端访问请求发送模块,用于发送所述访问请求至所述服务端,并接收所述服务端反馈的所需数据;所述所需数据由所述服务端验证所述客户端公钥通过后发送。

一种实现https双向认证的系统,包括:

服务端,及与所述服务端通信连接的客户端;

所述服务端用于执行如上述所述的实现https双向认证的方法;

所述客户端用于执行如上述所述的实现https双向认证的方法。

本申请提供的技术方案可以包括以下有益效果:

本申请中公开一种实现https双向认证的方法,该方法包括:加载预先构建的信任库;该信任库中存有客户端公钥。当信任库加载成功后,开启https双向认证功能,以接收客户端发送的https接口的访问请求;该访问请求由客户端加载所述信任库后生成。然后识别访问请求中的客户端公钥;将访问请求中的客户端公钥与信任库中的客户端公钥进行比对,若比对通过,返回客户端的所需数据。本申请中双向认证的过程中使用服务端自生成的客户端证书及信任库,可以自行设置证书过期年限,在服务端和客户端分别加载信任库进行https交互,将安全系数在有限范围内提升到了极致。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的应用于服务端的https双向认证的方法流程图;

图2是本发明一实施例提供的应用于客户端的https双向认证的方法流程图;

图3是本发明一实施例提供的应用于服务端的https双向认证的装置结构图;

图4是本发明一实施例提供的应用于客户端的https双向认证的装置结构图;

图5是本发明一实施例提供的实现https双向认证的系统结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。

本申请中提供了服务端(Java)和客户端(android)使用代码加载证书进行https交互的方法,具体通过服务端和客户端两个角度进行双向认证实现过程的介绍。具体如下:

现以客户端向服务端发送访问请求为例,进行详细介绍。

图1是本发明一实施例提供的应用于服务端的https双向认证的方法流程图。参见图1,一种实现https双向认证的方法,包括:

步骤101:加载预先构建的信任库;信任库中存有客户端公钥。其中,该信任库的构建过程为:调取keytool,生成服务端证书和客户端证书;然后将服务端证书的服务端公钥和客户端证书的客户端公钥存入信任库中。当服务端和客户端需要进行双向认证时,双方加载该信任库,进行身份认证。

步骤102:加载成功后,开启https双向认证功能,以接收客户端发送的https接口的访问请求;访问请求由客户端加载信任库后生成。服务端加载信任库成功后,获知该信任库中的服务端公钥和客户端公钥。其中,当服务端向客户端发送访问请求时,访问请求中包含服务端公钥,客户端依据该服务端公钥对客户端进行验证。当客户端向服务端发送访问请求时,客户端发送的访问请求中会包含客户端公钥,然后服务端会验证该访问请求中的客户端公钥与自身获取的信任库中的客户端公钥进行比对。

步骤103:识别访问请求中的客户端公钥。当客户端发送访问请求时,该访问请求中会包含客户端公钥,服务端根据该客户端公钥对客户端进行身份认证。

步骤104:判断访问请求中的客户端公钥与信任库中的客户端公钥一致。

步骤105:若比对通过,返回客户端的所需数据。当客户端发送的客户端公钥与服务端加载信任库中的客户端公钥一致,代表客户端身份认证通过,此时服务端识别客户端发送的访问请求中的所需数据请求,根据该所需数据请求确定客户端想要的数据,然后调取对应的所需数据,并反馈给客户端。

同时,在客户端向服务端发送访问请求时,客户端的操作如下:

图2是本发明一实施例提供的应用于客户端的https双向认证的方法流程图。参见图2,一种实现https双向认证的方法,包括:

步骤201:加载预先构建的信任库;所述信任库由服务端调取keytool生成。当进行https双向认证时,客户端和服务端均需要加载信任库,获取信任库中的客户端公钥和服务端公钥。

步骤202:获取所述信任库中存储的客户端公钥。

步骤203:生成包含所述客户端公钥的访问请求。当获取到信任库中的客户端公钥后,客户端生成访问请求,该访问请求中会包含客户端公钥和所需数据请求。

步骤204:发送所述访问请求至所述服务端,并接收所述服务端反馈的所需数据;所述所需数据由所述服务端验证所述客户端公钥通过后发送。发送该访问请求至服务端后,服务端会通过识别该访问请求对该客户端进行身份验证,验证通过后再返回客户端所需数据。

在上述实施例的基础上,本申请中双向认证方法,还支持服务端向客服端发送访问请求,具体的:服务端发送第二访问请求至客户端,客户端在接收到该第二访问请求后,识别该第二访问请求中的服务端公钥,然后客户端将识别出的第二访问请求中的服务端公钥与加载的信任库中的服务端公钥进行识别,判断二者是否一致,若二者一致,客户端识别第二访问请求中的目标数据请求,然后获取该目标数据请求对应的目标数据反馈至服务端。

本申请中首先使用keytool生成客户端证书、服务端证书以及信任库,将客户端公钥和服务端公钥导入信任库。然后将信任库和证书安放到android和java项目中去进行加载,首先java将服务端和信任库加载并开启https双向认证,此时只有经过客户端证书加载过的客户端的访问请求才能进行访问,在android端加载客户端证书和信任库才发送https接口请求,此时才能得到服务端响应。

需要注意的是,本申请中双向认证方法不仅仅可以开启443端口,还可以开启80端口,同时支持https和http两种请求。

本申请中使用自生成的证书,可以自行设置证书过期年限,对于安全度不高又不想去花钱去买ca证书的项目来说最为合适,在java和android端进行分别加载证书,将安全系数在有限范围内提升到了极致。

对应于本发明实施例提供的一种实现https双向认证方法,本发明实施例还提供一种实现https双向认证装置。请参见下文实施例。

图3是本发明一实施例提供的应用于服务端的https双向认证的装置结构图。参见图3,一种实现https双向认证的装置,包括:

第一信任库加载模块301,用于加载预先构建的信任库;所述信任库中存有客户端公钥;

客户端访问请求接收模块302,用于加载成功后,开启https双向认证功能,以接收客户端发送的https接口的访问请求;

客户端公钥识别模块303,用于识别所述访问请求中的客户端公钥;

公钥验证模块304,用于将所述访问请求中的客户端公钥与所述信任库中的客户端公钥进行比对,若比对通过,返回所述客户端的所需数据。

更进一步地,上述装置还包括:

证书生成模块,用于调取keytool,生成所述服务端证书和客户端证书;

信任库构建模块,用于将所述服务端证书中的服务端公钥和所述客户端证书中的客户端公钥存入所述信任库中。

第二访问请求发送模块,用于发送第二访问请求至所述客户端,并接收所述客户端反馈的目标数据;所述第二访问请求包含所述服务端公钥;所述目标数据由所述客户端验证所述服务端公钥通过后发送。

图4是本发明一实施例提供的应用于客户端的https双向认证的装置结构图。参见图4,一种实现https双向认证的装置,包括:

第二信任库加载模块401,用于加载预先构建的信任库;所述信任库由服务端调取keytool生成;

客户端公钥获取模块402,用于获取所述信任库中存储的客户端公钥;

客户端访问请求生成模块403,用于生成包含所述客户端公钥的访问请求;

客户端访问请求发送模块404,用于发送所述访问请求至所述服务端,并接收所述服务端反馈的所需数据;所述所需数据由所述服务端验证所述客户端公钥通过后发送。

还包括:

第二访问请求接收模块,用于接收所述客户端发送的第二访问请求;所述第二访问请求包括服务端公钥和目标数据请求;

服务端公钥比对模块,用于将所述第二访问请求中的服务端公钥与所述信任库中的服务端公钥进行比对;

服务端数据反馈模块,用于比对通过后,依据所述目标数据请求获取目标数据,并发送所述目标数据至所述服务端。

为了更清楚地介绍实现本发明实施例的硬件系统,对应于本发明实施例提供的一种实现https双向认证方法,本发明实施例还提供一种实现https双向认证系统。请参见下文实施例。

图5是本发明一实施例提供的实现https双向认证的系统结构图。参见图5,一种实现https双向认证的系统,包括:

服务端501,及与所述服务端501通信连接的客户端502;

所述服务端501用于执行如上述所述的实现https双向认证的方法;

所述客户端502用于执行如上述所述的实现https双向认证的方法。

上述装置或设备解决java端与android端进行交互的时候为了给信息加密而使用的https双向认证的问题,使用自生成的证书,可以自行设置证书过期年限。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号