Spring MVC 利用class-final 加密war包部署到tomcat笔记

Spring MVC 利用class-final 加密war包部署到tomcat笔记

由于公司要求项目部署需要加密,防止别人拷贝出去运行或者反编译,故找了一些依赖尝试,最终选择class-final,确实好用,不过也走了一些坑,记录一下,以防忘记;

1、工程修改

在pom.xml中加入class-final插件

<plugin>
                <!-- https://gitee.com/roseboy/classfinal -->
                <groupId>net.roseboy</groupId>
                <artifactId>classfinal-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <password>000000</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
                    <!--加密的包名,多个可用","分割-->
                    <packages>com.pack</packages>
                    <!--配置文件jdbc.properties若加密无法读取,故不做加密-->
                    <!--<cfgfiles>jdbc.properties,saToken.properties,sm.properties</cfgfiles>-->
                    <excludes>org.spring</excludes>
                    <!--需要加密的lib下的jar或者war包,可为空-->
                    <!--<libjars></libjars>-->
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>classFinal</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

插件地址class-final;里面也有具体步骤,不过自己记录一下自己遇到的问题

2、tomcat处理

2.1 将classfinal-fatjar-1.2.1.jar放入tomcat/bin目录下;

版本自己决定用哪个版本,当然,最好跟工程引入的版本一致

2.2 修改tomcat/bin下的setclasspath.bat文件(此步骤可忽略)

此步骤目的是将启动窗口隐藏调
set _RUNJAVA="%JRE_HOME%\bin\java.exe"
改成set _RUNJAVA="%JRE_HOME%\bin\javaw.exe"

2.3 修改tomcat/bin目录下的文件catalina.bat文件(若是linux,则修改catalina.sh)–此处有坑

在setlocal下加入配置

set JAVA_OPTS=-javaagent:classfinal-fatjar-1.2.1.jar="-pwdname START_KEY"

其中START_KEY 为环境变量名称,我这里是用的环境变量来配置启动密码
注意,此处不能项官网一样使用(注意两者引号区别):

set JAVA_OPTS="-javaagent:classfinal-fatjar.jar='-pwdname START_KEY'"

具体原因未知,个人猜测是命令不支持

4、增加系统环境

在系统变量名:START_KEY,变量值:000000,也就是第一步中pom.xml里面配置的password值

5、另外,此种配置无法·通过服务启动,只能通过startup启动

ClassFinal是一款Java class文件安全加密工具,支持直接加密jarwar,无需修改任何项目代码,兼容spring-framework,可避免源码泄漏或字节码被反编译。 项目模块说明: classfinal-core:ClassFinalde的核心模块,几乎所有加密的代码都在这里; classfinal-fatjar:ClassFinal成独立运行的jarclassfinal-maven-plugin:ClassFinal加密的maven插件; 功能特性: 无需修改原项目代码,只要把编译好的jar/war用本工具加密即可。 运行加密项目时,无需求修改tomcatspring等源代码。 支持普通jarspringboot jar以及普通java web项目编译的war。 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。 支持maven插件,添加插件后在打过程中自动加密。 支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar。 环境依赖: JDK 1.8 + 本工具使用AES算法加密class文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。 密码一旦忘记,项目不可启动且无法恢复,请牢记密码。 本工具加密后,原始的class文件并不会完全被加密,只是方法体被清空,保留方法参数、注解等信息,这是为了兼容spring,swagger等扫描注解的框架; 方法体被清空后,反编译者只能看到方法名和注解,看不到方法的具体内容;当classclassloader加载时,真正的方法体会被解密注入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军师少帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值