SafeNet Sentinel LDK 版本的Envelope工具可以支持保护J2EE架构的应用程序,目前支持Tomcat(6.0.29 或更高版本), Jboss7.1从 LDK6.4 版本开始提供支持。此文档以LDK7.3 和tomcat 为例演示对java 程序的加密操作。
1、加密前的准备
Envelope所在电脑已经安装了Jre或者JDK环境。
LDK套件自带安装Jre环境,如果在非套件安装PC上加密,请手动安装Jre环境:对64位系统,请同时安装x64和x86两个版本的Jre,对32位系统请手动安装x86版本的Jre
在保护jar或者war文件之前,请先运行masterwizard,导出开发商库
如果加密war包,请将war里面所有属于第三方的jar包和.class文件都移出备份,待加密完成后再将移出的部分导入(如果调用了LDK的API接口,请将LDK API接口封装包hasp-srm-api.jar也移出备份)
2、使用 Sentinel LDK Envelope工具对jar或 war包进行保护
将要保护的文件加入envelope工具,如图所示,在General项中会显示已经解析的所有方法,请先选择要加密的方法进行测试:
(Envelope 提供了全选 select all 和全不选 clear all 的功能,并且可以在 Search list 中通过关键字搜索对应的方法。对于一些较大的文件,合理的选择要加密的方法,可以有效的提高运行效率和加密成功率,
关于方法选择的建议,请参考 envelope 的帮助文档已经 release 文档中的限制条件) 在高级设置中,将MESSAGE_OUTPUT_MODE设置为(stderr)true(选择stderr是因为某些系统没有GUI图形环境,程序运行时抛出的提示信息无法显示导致应用启动失败,否则也可以使用 windows 模式) 加密war时此处默认选中为stderr,加密jar包时需要手动设置。 点击左侧“Sentinel Vendor Code”,选择自己的开发号部署加密后的文件
Jar 包和war包的加密输出并不相同,下面分别演示两种文件的部署方式:
加密后的jar包(此处以加密standard-1.1.2.jar作为演示):
加密后,输出目录下一般会产生下面这些文件 对于tomcat下面的应用,jar 包通常是放置在应用目录下的\WEB-INF\lib内,此处先将DGC 文件添加 .jar 后缀,然后与加密的standard-1.1.2.jar以及额外三个safenet-*.jar包,共同部署到应用目录\WEB-INF\lib下面
加密后的war包(此处以 helloWorld.war 作为演示):
war包加密后,产生的文件相对较少,此处只需要将原来移出的jar包和.class文件重新加入,部署时将safenet-sentinel-hasp-api-j2ee.jar放入$CATALINA_HOME/lib目录下以上为加密后的jar 包和war包部署方式,为了能让加密后的java 程序正常工作,还需要部署底层的native 库,即加密后产生的一些dll文件,通常有两对(32 位和64为版本)共四个:
Windows 平台:
HASPJava.dll
hasp_windows_82130.dll
HASPJava_x64.dll
hasp_windows_x64_82130.dll
Linux 平台: libHASPJava.so
libhasp_linux_82130.so
libHASPJava_x86_64.so
libhasp_linux_x64_82130.so
(linux 上的开发商库需要单独在linux 平台上运行masterhasp工具导出, LDK 套件中已有文档说明,此处不再赘述) 这些库文件需要放置到java 程序所能识别的路径中,例如:$CATALINA_HOME/bin,$JA
VA_HOME/bin,/usr/lib,/usr/lib64 或者 windows的系统路径c:\windows\system32,c:
\windows\sysWoW64等,如果部署后运行仍然提示H0400 错误(没有找到开发商库),请在环境变量中添加 LD_LIBRARY_PATH变量,并将开发商库(名称中带数字的库)所在目录路径赋给此变量。
提示:java 程序加密的限制条件,请参考LDK的 release文档和envelope的帮助文档,如果加密后出现未知的异常,请联系SafeNet并提供您的测试用例以便分析.