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

应用软件加密部署方法和系统与流程

2021-12-07 20:10:00 来源:中国专利 TAG:


1.本技术涉及计算机领域,尤其涉及一种应用软件加密部署方法和系统。


背景技术:

2.在软件行业中,部分客户可能会要求将应用软件部署到客户的内部服务器或者私有云上。当该应用软件为java应用软件时,该部署于客户的内部服务器或者私有云上的java应用软件的程序代码,通常容易被逆向解析得到源代码。进而,容易出现代码泄露等问题。
3.针对这一问题,现有技术通常使用java混淆器实现源代码的混淆。目前,常用的java混淆器包括proguard、allatori、obfuscate4e等。程序员可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性,从而实现该源代码的混淆。程序员可以将该混淆后的源代码打包并上传。逆向解析该混淆后的源代码将无法得到正确的源代码。
4.然而,该java混淆器通常需要程序员上传源代码前,在本地手动对源代码进行混淆。该源代码混淆方式存在自动化程度低,操作不便捷等问题。


技术实现要素:

5.本技术提供一种应用软件加密部署方法和系统,用以解决现有技术需要手动对源代码进行混淆,导致的自动化程度低,操作不便捷等问题。
6.第一方面,本技术提供一种应用软件加密部署方法,包括:
7.获取待混淆的源代码;
8.根据配置信息对源代码进行混淆,得到混淆代码,所述混淆代码具有与所述源代码相同的逻辑内容,所述混淆代码用于防止应用软件包被逆向解析后导致源代码泄露;
9.打包所述混淆代码,得到应用软件包,所述应用软件包中包括第一文件、摘要文件和所述混淆代码,所述第一文件中包括类的归档文件或者web应用程序;
10.根据所述应用软件包,生成镜像容器,所述镜像容器中包括所述应用软件包、应用服务器和动态库,所述应用服务器用于在所述镜像容器中运行所述应用软件包。
11.可选地,所述根据配置信息对源代码进行混淆,得到混淆代码,包括一下至少一种:
12.将源代码中类、函数或者字段中的目标单词替换为预设单词;
13.将源代码中类、函数或者字段中的目标单词替换为随机字符;
14.将源代码中类、函数或者字段中的目标单词替换为预设字符的随机排列组合,所述预设字符中包括多个相似字符。
15.可选地,所述方法,还包括:
16.根据预设加密规则,生成密钥对,所述密钥对中包括公钥和私钥;
17.根据所述私钥,对第一文件进行加密,得到第一密文。
18.可选地,所述根据配置信息对源代码进行混淆之前,所述方法,还包括:
19.获取用户信息,所述用户信息中包括上传所述源代码的客户端信息和所述客户端中登录的账号信息;
20.根据所述用户信息和第一白名单,判断所述源代码是否需要进行混淆。
21.可选地,当在所述镜像容器中运行所述应用服务器时,所述方法,还包括:
22.根据所述应用服务器的ip地址和第二白名单,判断所述应用服务器的接口是否合法;
23.调用所述动态库的校验接口来校验所述应用软件包是否合法;
24.当所述应用服务器的接口和所述应用软件包均合法时,在所述镜像容器中通过所述应用服务器执行所述应用软件包。
25.可选地,所述调用所述动态库的校验接口来校验所述应用软件包是否合法,还包括:
26.获取公钥、第一密文、第一文件和摘要文件;
27.根据所述公钥、所述第一密文,验证所述第一文件是否正确;
28.根据所述摘要文件,判断所述应用软件包中的类是否为最新版本;
29.当所述第一文件正确,且所述应用软件包中的类均为最新版本时,确定所述应用软件包合法。
30.第二方面,本技术提供一种应用软件加密部署系统,包括:
31.所述数据仓库用于获取并存储源代码;
32.所述混淆服务模块用于对所述数据仓库中的源代码进行混淆,得到混淆代码;
33.所述打包服务模块用于对所述混淆代码进行打包,得到应用软件包;
34.所述镜像服务模块用于生成所述应用软件包的镜像容器,所述镜像容器中还包括应用服务器和动态库,所述应用软件包将在所述镜像容器中通过所述应用服务器启动并执行。
35.可选地,所述混淆服务模块,还包括:配置中心、后台服务模块、前端服务模块和数据库;
36.所述配置中心用于配置混淆规则;
37.所述后台服务模块用于根据所述混淆规则,对所述源代码进行混淆,得到混淆代码;
38.所述前端服务模块用于可视化所述混淆过程;
39.所述数据库用于存储所述源代码、所述混淆代码和版本信息。
40.第三方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当应用软件加密部署系统的至少一个处理器执行该计算机程序时,应用软件加密部署系统执行第一方面及第一方面任一种可能的设计中的应用软件加密部署方法。
41.第四方面,本技术提供一种计算机程序产品,计算机程序产品包括计算机程序,当应用软件加密部署系统的至少一个处理器执行该计算机程序时,应用软件加密部署系统执行第一方面及第一方面任一种可能的设计中的应用软件加密部署方法。
42.本技术提供的应用软件加密部署方法和系统,通过服务器可以使用git工具建立数据仓库。当程序员完成源代码的编写后,可以通过登录该git工具实现源代码的上传。服务器可以从配置中心获取混淆的配置信息。当服务器获取混淆配置信息后,服务器可以使
用该混淆配置信息对源代码进行混淆,得到混淆代码。服务器在获取混淆代码后,可以使用maven对该混淆代码进行编译和打包,得到应用软件包。服务器在获取应用软件包后,使用docker工具生成该应用软件包的镜像容器。该镜像容器中除了该应用软件包,还可以包括应用服务器和动态库的手段,实现提高应用软件包的安全性,避免应用软件包被逆向解析后导致的源代码泄露问题的效果。
附图说明
43.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
44.图1为本技术一实施例提供的一种应用软件加密部署的场景示意图;
45.图2为本技术一实施例提供的一种应用软件加密部署方法的流程图;
46.图3为本技术一实施例提供的另一种应用软件加密部署方法的流程图;
47.图4为本技术一实施例提供的再一种应用软件加密部署方法的流程图;
48.图5为本技术一实施例提供的一种应用软件加密部署的结构示意图。
具体实施方式
49.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
50.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。
51.此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
52.在软件行业的tob市场中,saas服务的提出,为客户极大的降低了在软件部署过程中的硬件成本。saas服务商是软件服务商和企业客户之外的第三方。软件服务商可以利用saas平台的网络基础设施及软件和硬件运作平台,完成应用软件的部署、调试、维护、升级等一系列操作。客户可以通过软件服务商提供的接口或者交互界面,实现该应用软件的调用。该过程中,应用软件的源代码被掌握在软件服务商手中。
53.然而,对于部分客户来说,应用软件必须单独部署在客户的内部服务器或者私有云上。此时,当软件服务商将应用软件部署在客户的内部服务器或者私有云上后,软件服务商将失去对该应用软件的源代码的监控。客户可以通过逆袭解析应用软件,得到该应用软件的源代码。特别是使用java语言编写的应用软件,该java应用软件编译得到的文件为字
节码文件。该字节码文件相对于c/c 等语言编译生成的二进制文件,更加容易被逆向解析出源代码。
54.因此,针对java应用软件,如果不加以防范,很容易造成代码泄漏以及被恶意人员修改而带来的安全问题。
55.现有技术中,针对这一问题,通常使用java混淆器实现源代码的混淆。目前,常用的java混淆器包括proguard、allatori、obfuscate4e等。下面将以proguard为例,该proguard可以删除无用的类、字段、方法和属性、可以删除没用的注释、可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。程序员可以使用该proguard,在本地对源代码进行混淆,得到混淆代码。程序员可以在完成混淆后,将该混淆代码上传,进而实现该混淆代码的打包和使用。然而,progurad需要程序要在本地进行混淆。该混淆方式不具备完整的代码版本管理,容易导致多人上传后,无法确定某个class的代码版本。并且,该混淆方式中,每次混淆源代码都需要程序员手动进行混淆操作,无法做到自动进行,存在操作不便捷、自动化程度低的问题。
56.针对上述问题,本技术提出了一种应用软件加密部署方法。程序员可以将源代码上传git仓库。混淆服务器从git仓库中获取该源代码,并根据预设的配置信息,对源代码进行混淆,得到混淆代码。该混淆代码为将源代码中的类、函数或者字段中的目标单词替换为其他字符串后的源代码。打包服务器获取该混淆代码,并使用maven工具对该混淆代码进行编译和打包,得到应用软件包。镜像服务器生成该应用软件包的镜像容器。该镜像服务器中还包括应用服务器tomcat。应用软件包可以在该镜像容器中通过该tomcat实现运行。本技术将混淆服务器编排到了jenkins的pipeline流程中,使该自动化流程具备了源代码混淆功能,实现了自动化混淆。
57.下面以具体地实施例对本技术的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
58.图1示出了本技术一实施例提供的一种应用软件加密部署的场景示意图。如图所示为持续集成(continuous integration,ci)的流程示意图。该ci流程主要采用jenkins的pipeline进行流程编排。该编排后的流程主要包括4个节点。pipeline的工作流框架将该4个节点串连起来,实现该应用软件加密部署的过程。该过程中,工作流框架首先调用git工具获取源代码。该git工具可以为针对一个项目建立的数据仓库。该项目的源代码数据将存储于该数据仓库中。当程序员将源代码上传到git工具的数据仓库后,该工作流框架中的第二个节点被触发。数据仓库中的源代码被发送到混淆放服务的节点。在该混淆服务节点,源代码被使用混淆服务进行混淆。同时,该混淆服务的节点还记录下混淆前后代码版本,并持久化。其中,混淆服务可以包括web服务、后台服务、配置中心和数据库四个部分。当源代码在混淆服务节点完成混淆后,混淆代码被发送到打包节点。该打包节点中包括maven工具。混淆代码被该maven工具编译并打包。最后,该打包后的应用软件包被发送到镜像节点。该镜像节点使用docker生成一个镜像容器,打包好的应用软件包、定制化tomcat、so动态库均被打入该镜像容器中。最后,该镜像容器被部署到k8s集群中,并实现持续交付(continuous delivery,cd)。其中,so动态库中的so文件是二进制文件。该so文件将在应用软件的使用过程中承担解密和校验的工作。
59.本技术中,以电子设备为执行主体,执行如下实施例的应用软件加密部署方法。具
体地,该执行主体可以由一个或者多个服务器组成。下述图2至图4所示的实施例中,将以一个服务器为例,对应用软件加密部署方法进行详细描述。
60.图2示出了本技术一实施例提供的一种应用软件加密部署方法的流程图。在图1所示实施例的基础上,如图2所示,以服务器为执行主体,本实施例的方法可以包括如下步骤:
61.s101、获取待混淆的源代码。
62.本实施例中,服务器可以使用git工具建立数据仓库。该数据仓库可以运行于该服务器中。程序员可以在各自的客户端中完成源代码的编写。当程序员完成源代码的编写后,可以通过登录该git工具实现源代码的上传。其中,每一程序员可以拥有一个git账号。当程序员上传该源代码时,程序员的客户端还可以上传其终端信息和git账号信息。或者,程序员在各自的客户端中完成源代码的编写后,可以通过登录jenkins账号,实现源代码的上传。其中,一个或者多个程序员可以拥有一个jenkins账号。当程序员使用该jenkins账号登录jenkins的pipeline后,可以在该pipeline的流程节点中,上传源代码。该流程节点中可以包括git工具建立数据仓库。
63.一种示例中,服务器还可以获取该源代码的版本信息。该版本信息用于指示该源代码的更新版本。
64.s102、根据配置信息对源代码进行混淆,得到混淆代码,混淆代码具有与源代码相同的逻辑内容,混淆代码用于防止应用软件包被逆向解析后导致源代码泄露。
65.本实施例中,服务器可以从配置中心获取混淆的配置信息。该配置中心可以为一个可视化界面。程序员可以通过在该配置中心设置配置规则,实现配置信息的设置。其中,基础设置可以包含类、函数、变量的替换规则。例如,替换其中的部分字符等。其中,根据混淆后的可辨认度,可以将混淆难度分为三档。
66.一种示例中,服务器可以将源代码中类、函数或者字段中的目标单词替换为预设单词。该单词替换的方式属于低难度的混淆。
67.另一种示例中,服务器可以将源代码中类、函数或者字段中的目标单词替换为随机字符。该随机字符的替换方式属于中难度的混淆。当源代码使用中难度的混淆方式进行混淆后,该源代码即便被逆向解析出来也无法读懂含义。该混淆方式可以较好地保护源代码的安全性,避免代码泄露。
68.再一种示例中,服务器可以将源代码中类、函数或者字段中的目标单词替换为预设字符的随机排列组合,预设字符中包括多个相似字符。该随机排列组合的替换方式属于高难度的混淆。其中,预设字符可以为“o”、“o”、“0”等相似度较高,且模糊不易分辨的字符。使用该高难度的混淆方式进行混淆后,该源代码即便被逆向解析出来也无法分清楚字符。该混淆方式可以最大程度增加理解难度,可以很好地保护源代码的安全性,避免代码泄露。
69.当服务器获取混淆配置信息后,服务器可以使用该混淆配置信息对源代码进行混淆,得到混淆代码。该混淆代码与源代码具有相同的逻辑内容。该逻辑内容可以包括功能逻辑、交互逻辑等。并且使用该混淆代码进行打包得到的应用软件包,即便被逆向解析出来也无法正确解读其中的含义。
70.s103、打包混淆代码,得到应用软件包,应用软件包中包括第一文件、摘要文件和混淆代码,第一文件中包括类的归档文件或者web应用程序。
71.本实施例中,服务器在获取混淆代码后,可以使用maven对该混淆代码进行编译和
打包,得到应用软件包。该应用软件包中可以包括第一文件、摘要文件和混淆代码。其中,第一文件中包括类的归档文件(jar包)或者web应用程序(war包)。该jar包或者war包的使用根据该源代码所在的项目确定。摘要文件中包括混淆后的类(class)文件的摘要信息。该摘要信息中包括类名和该类的版本信息。该混淆代码为编译后的混淆代码。
72.一种示例中,该摘要文件使用摘要算法对每一个class文件进行摘要计算后得到。该摘要算法在可以在配置文件中进行配置。同时,为了避免该摘要算法在运行时被篡改,服务器还可以使用md5算法对该摘要算法进行加密。该md5算法的使用,可以保证该摘要文件的安全生成,从而提高该摘要文件的有效性。
73.s104、根据应用软件包,生成镜像容器,镜像容器中包括应用软件包、应用服务器和动态库,应用服务器用于在镜像容器中运行应用软件包。
74.本实施例中,服务器在获取应用软件包后,使用docker工具生成该应用软件包的镜像容器。该镜像容器中除了该应用软件包,还可以包括应用服务器和动态库。其中应用服务器为定制化的tomcat。该tomcat用于运行该应用软件包。该定制化的tomcat具有定制化的lifecyclelistener接口。在tomcat启动时,该lifecyclelistener接口将启动其监听器,进入观察者模式。其中,动态库具体为so动态库。由于该so动态库在加载时,其内存地址是随机的,可以极大的增加了应用软件包的安全性,避免被逆向解析出源代码。
75.本技术提供的应用软件加密部署方法,使用git工具建立数据仓库;登录该git工具上传源代码;从配置中心获取混淆的配置信息;使用该混淆配置信息对源代码进行混淆,得到混淆代码;使用maven对该混淆代码进行编译和打包,得到应用软件包;使用docker工具生成该应用软件包的镜像容器,该镜像容器中除了该应用软件包,还包括应用和动态库。本技术中,通过将混淆步骤添加到jenkins的pipeline流程,实现了在源代码管理过程中对源代码进行混淆,提高了应用软件包的安全性,避免了应用软件包被逆向解析后导致的源代码泄露问题。
76.图3示出了本技术一实施例提供的一种应用软件加密部署方法的流程图。在图1和图2所示实施例的基础上,如图3所示,以为执行主体,本实施例的方法可以包括如下步骤:
77.s201、获取待混淆的源代码。
78.其中,步骤s201与图2实施例中的步骤s101实现方式类似,本实施例此处不再赘述。
79.s202、获取用户信息,用户信息中包括上传源代码的客户端信息和客户端中登录的账号信息。
80.本实施例中,程序员可以通过其客户端的应用程序,将源代码上传到服务器。服务器在获取客户端上传的源代码时,服务器还可以获取用户信息。该用户信息可以包括客户端信息,以及用户在该客户端的应用程序中登录的账号信息。
81.一种示例中,该客户端的应用程序可以与该客户端绑定。即,当程序员使用该客户端上传源代码时,服务器可以根据该客户端信息确定其对应的程序员。该方式可以将权限与客户端进行绑定,不相关人员将无法通过其他客户端,登录该数据仓库,获取项目相关信息。
82.另一种示例中,程序员需要在该客户端的应用程序中进行登录,进而上传源代码。服务器可以根据该客户端的应用程序中登录的账号信息确定该源代码对应的程序员。该方
式可以将权限与程序员进行绑定,不相关人员将无法使用其账号登录该数据仓库,获取项目相关信息。
83.再一种示例中,程序员可以在该客户端中使用jenkins账号进行登录。该jenkins账号可以由一个或者多个程序员共同持有。当程序员需要在其客户端上传源代码时,程序员需要使用该jenkins账号登录该应用程序,进而实现源代码的上传。服务器可以获取该客户端的客户端信息和账号信息。该方式可以将权限与jenkins账号进行绑定,不相关人员将无法获知该jenkins账号,从而避免了不相干人员登录该数据仓库,获取项目相关信息的可能性。
84.s203、根据用户信息和第一白名单,判断源代码是否需要进行混淆。
85.本实施例中,服务器中可以包括第一白名单。该第一白名单中包括客户端信息和/或账号信息。服务器判断用户信息中的客户端信息和/或账号信息是否在该第一白名单中。当该用户信息在该第一白名单中时,服务器确定该源代码需要进行混淆。当该用户信息不在该第一白名单中时,服务器确定该源代码不需要进行混淆。
86.上述过程中,服务器通过该第一白名单实现了鉴权认证。即,当该用户信息在该第一白名单中时,鉴权成功。否则,鉴权失败。该鉴权认证在该pipeline流程中的使用,可以防止与该项目不相关的人员获取该项目的相关信息。同时,该鉴权认证的使用,还可以对程序员的权限进行管理,可以有效避免在该项目生产过程中的误操作。
87.s204、根据配置信息对源代码进行混淆,得到混淆代码,混淆代码具有与源代码相同的逻辑内容,混淆代码用于防止应用软件包被逆向解析后导致源代码泄露。
88.s205、打包混淆代码,得到应用软件包,应用软件包中包括第一文件、摘要文件和混淆代码,第一文件中包括类的归档文件或者web应用程序。
89.其中,步骤s204和s205与图2实施例中的步骤s102和s103实现方式类似,本实施例此处不再赘述。
90.s206、根据预设加密规则,生成密钥对,密钥对中包括公钥和私钥。
91.本实施例中,服务器可以根据预设加密规则生成密钥对。该预设加密规则可以在服务器的配置心中进行配置。其默认预设加密算法可以为rsa1024非对称加密算法。该密钥对中可以包括私钥和公钥。其中,rsa算法密钥长度的选择是安全性和程序性能平衡的结果,密钥长度越长,安全性越好,加密解密所需时间越长。其中,rsa1024是指公钥及私钥分别是1024bit(128byte)。1024bit的密钥一次能加密的内容长度为117byte。
92.在服务器生成该密钥对后,其中的公钥将被保存到s208的镜像容器的动态库中。当需要解密时,该镜像容器将通过该动态库使用该公钥对第一密文进行解密。
93.s207、根据私钥,对第一文件进行加密,得到第一密文。
94.本实施例中,服务器在获取上述密钥对后,使用其中的私钥对第一文件进行加密。其中,第一文件中包括该应用软件的jar包或者war包。服务器使用私钥对该jar包或者war包进行加密后得到第一密文。该第一密文将被保存到s208生成的镜像容器中。
95.s208、根据应用软件包,生成镜像容器,镜像容器中包括应用软件包、应用服务器和动态库,应用服务器用于在镜像容器中运行应用软件包。
96.其中,步骤s208与图2实施例中的步骤s104实现方式类似,本实施例此处不再赘述。
97.本技术提供的应用软件加密部署方法,服务器获取待混淆的源代码。服务器在获取客户端上传的源代码时,服务器还可以获取用户信息。该用户信息可以包括客户端信息,以及用户在该客户端的应用程序中登录的账号信息。服务器中可以包括第一白名单。服务器判断用户信息中的客户端信息和/或账号信息是否在该第一白名单中,从而实现鉴权认证。服务器根据配置信息对源代码进行混淆,得到混淆代码。服务器打包混淆代码,得到应用软件包。服务器可以根据预设加密规则生成密钥对。服务器在获取上述密钥对后,使用其中的私钥对第一文件进行加密。服务器根据应用软件包,生成镜像容器。本技术中,通过鉴权认证和加密,实现对混淆过程的安全管理,增加该pipeline流程的安全性。
98.在上述各是实施例的基础上,本实施例还能够在对源代码进行混淆后,保存源代码、混淆代码和版本信息,以实现该混淆代码的版本管理。本技术提供的应用软件加密部署方法,通过获取并保存源代码、混淆代码和版本信息,使每一版本的历史信息均可以被检索到,实现了源代码和混淆代码的版本管理。
99.图4示出了本技术一实施例提供的一种应用软件加密部署方法的流程图。在图1至图3所示实施例的基础上,如图4所示,当服务器生成镜像容器,并将该镜像容器部署到k8s集群后,以该k8s集群中某一服务器为执行主体,该应用软件包在该镜像容器中的运行过程可以包括如下步骤:
100.s301、根据应用服务器的ip地址和第二白名单,判断应用服务器的接口是否合法。
101.本实施例中,应用服务器为该镜像容器中的web应用服务器。该应用服务器可以为tomcat。该tomcat用于运行该镜像容器中的应用软件包。该tomcat具有定制化的lifecyclelistener接口。在tomcat启动时,该tomcat可以调用动态库的java本地调用(java native interface,jni)进行鉴权。
102.该鉴权过程启动后,动态库获取预先存储的第二白名单。该第二白名单中包括一个或者多个ip地址。定制化的tomcat配置有固定的ip地址。动态库可以获取该tomcat的ip地址。动态库比较该ip地址与第二白名单中的ip地址。当该ip地址在该第二白名单范围内时,该动态库确定该tomcat为合法的应用服务器。否则,动态库确定该应用服务器不合法。此时,该动态库可以结束该次tomcat的启动。该鉴权过程的使用,可以有效避免该镜像容器中的应用软件包被提取后在其他tomcat中运行,从而可以降低被逆向解析的可能性。
103.一种示例中,动态库中还可以存储有第三白名单。该第三白名单中包括一个或者多个镜像容器标识。当该应用服务器被启动时,动态库可以获取该镜像容器的镜像容器标识。动态库将该镜像容器标识与第三白名单中的镜像容器标识进行比较。当该应用服务器在第三白名单允许的镜像容器中运行时,该次鉴权成功。否则,该次鉴权失败。当鉴权失败时,该动态库可以结束该次tomcat的启动。该鉴权过程的使用,可以有效避免该镜像容器中的应用软件包被复制后在其他环境中使用。该鉴权过程还可以有效避免该镜像容器被不合理复制。
104.s302、调用所述动态库的校验接口来校验所述应用软件包是否合法。
105.本实施例中,动态库还可以调用验证接口对应用软件包中的信息进行验证,从而保证该应用软件包的信息的安全性。
106.一种示例中,该验证过程具体包括:
107.步骤1、获取公钥、第一密文、第一文件和摘要文件。
108.本步骤中,动态库可以从该镜像容器或者动态库中获取公钥、第一密文、第一文件和摘要文件。
109.步骤2、根据公钥、第一密文,验证第一文件是否正确。
110.本步骤中,动态库使用该公钥对第一文件进行加密,得到第二密文。动态库比较该第一密文和第二密文。当该第一密文和第二密文一致时,动态库确定该第一文件为正确的第一文件。否则动态库确定第一文件错误。
111.步骤3、根据摘要文件,判断应用软件包中的类是否为最新版本。
112.本步骤中,动态库获取摘要文件后,对该摘要文件中的class文件进行校验。动态库判断每一class文件是否为最新版的class文件。当该摘要文件中每一class文件均为最新版时,动态库确定该应用软件包为最新版的应用软件包。否则,动态库确定该应用软件包不是最新版的应用软件包。
113.步骤4、当第一文件正确,且应用软件包中的类均为最新版本时,确定应用软件包合法。
114.本步骤中,当动态库确定第一文件为正确的第一文件,以及应用软件包为最新版的应用软件包时,动态库确定该应用软件包为合法的应用软件包。当该应用软件包为不合法的应用软件包时,该动态库可以结束该次tomcat的启动。
115.s303、当应用服务器的接口和应用软件包均合法时,在镜像容器中通过执行应用软件包。
116.本实施例中,当动态库判断后确定应用服务器的接口和应用软件包均合法时,应用服务器加载动态库中的class文件,并执行应用软件包。
117.本技术提供的应用软件加密部署方法,应用服务器为该镜像容器中的web应用服务器。该应用服务器可以为tomcat。在tomcat启动时,该tomcat可以调用动态库的jni进行鉴权。当该ip地址在该第二白名单范围内时,该动态库确定该tomcat为合法的应用服务器。否则,动态库确定该应用服务器不合法。动态库还可以对应用软件包中的信息进行验证。当动态库判断后确定应用服务器的接口和应用软件包均合法时,应用服务器加载动态库中的class文件,并执行应用软件包。本技术中,通过在应用服务器运行时进行鉴权和校验,进一步提高了该应用软件包的安全,可以有效避免该应用软件包被更换,同时,还可以有效避免该应用软件包在不安全的环境中运行。
118.图5示出了本技术一实施例提供的一种应用软件加密部署系统的结构示意图,如图5所示,本实施例的应用软件加密部署系统10用于实现上述任一方法实施例中对应于电子设备的操作,本实施例的应用软件加密部署系统10包括:数据仓库11、混淆服务模块12、打包服务模块13和镜像服务模块14。
119.其中,数据仓库11用于获取并存储源代码。该数据仓库可以运行于第一服务器中。程序员通过在客户端登录该数据仓库,实现源代码的上传。
120.其中,混淆服务模块12用于对数据仓库中的源代码进行混淆,得到混淆代码。
121.一种示例中,混淆服务模块12具体可以包括配置中心121、后台服务模块122、前端服务模块123和数据库124。
122.其中,配置中心121用于配置混淆规则。该配置中心可以包括前端界面。程序员可以通过该前端界面选择或者输入混淆规则。该配置中心还可以用于配置摘要算法和预设加
密算法。
123.其中,后台服务模块用于根据混淆规则,对源代码进行混淆,得到混淆代码。该后台服务模块还可以用于鉴权。
124.其中,前端服务模块用于可视化混淆过程。例如,可视化配置混淆规则、呈现不同版本的代码混淆前后的信息、对比混淆前后的代码等。
125.其中,数据库用于存储源代码、混淆代码和版本信息。该数据库还可以对每次混淆后的混淆代码使用摘要算法计算摘要文件。该数据库还可以保存随机生成jar包或者war包的rsa1024算法的公私密钥。
126.其中,打包服务模块用于对混淆代码进行打包,得到应用软件包。该打包服务器模块主要使用maven工具实现该混淆代码的打包。
127.其中,镜像服务模块用于生成应用软件包的镜像容器,镜像容器中还包括应用服务器和动态库,应用软件包将在镜像容器中通过应用服务器启动并执行。该镜像服务模块主要使用docker实现该镜像容器的生成。
128.本实施例中,上述各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。或者,上述各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。
129.本技术还提供一种计算机可读存储介质。当各个模块以软件功能模块的形式,集成在一起时,各个功能模块可以存储在该计算机可读取存储介质中。上述软件功能模块包括计算机程序,该计算机程序用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例方法的部分步骤。
130.其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(application specific integrated circuits,asic)中。另外,该asic可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。
131.具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(static random

access memory,sram),电可擦除可编程只读存储器(electrically

erasable programmable read

only memory,eeprom),可擦除可编程只读存储器(erasable programmable read only memory,eprom),可编程只读存储器(programmable read

only memory,prom),只读存储器(read

only memory,rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
132.本技术还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质
中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。
133.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
134.应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
135.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制。尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

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

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

相关文献