应用文档
应用文档
应用文档 首页 > 应用文档

Sentinel LDK加密狗外壳加密JAVA程序的相关说明

更新时间:2018-04-25 14:41:51   点击量:
SafeNet Sentinel LDK 版本的外壳加密(Envelope)工具可以支持保护J2EE架构的应用程序,目前支持 Tomcat(6.0.29 或更高版本), Jboss7.1 从 LDK6.4 版本开始提供支持。此文档以 LDK7.6 和 tomcat 为例演示对 java 程序的加密操作。

1、加密前的准备
 
• Envelope所在电脑已经安装了Jre或者JDK环境。LDK套件自带安装Jre环境,如果在非套件安装PC上加密,请手动安装Jre环境:对64位系统,请同时安装x64和x86两个版本的Jre,对32位系统请手动安装x86版本的Jre。
 
• 在保护jar或者war文件之前,请先运行主锁向导,导出开发商库。
 
• 如果加密war包,请将war里面所有属于第三方的jar包和.class文件都移出备份,待加密完成后再将移出的部分导入(如果调用了LDK的API接口,请将LDK API接口封装包hasp-srm-api.jar也移出备份)。
 
2、使用 Sentinel LDK Envelope 工具对 jar 或 war 包进行保护
 
将要保护的文件加入 envelope 工具,如图所示,在常规项中会显示已经解析的所有方法,请先选择要加密的方法进行测试:

(Envelope 提供了全选 select all 和全不选 clear all 的功能,并且可以在 Search list 中通过关键字搜索对应的方法。对于一些较大的文件,合理的选择要加密的方法,可以有效的提高运行效率和加密成功率,关于方法选择的建议,请参考 envelope 的帮助文档已经 release 文档中的限制条件) 

在高级设置中,将 MESSAGE_OUTPUT_MODE 设置为(stderr)true,如下图,
(选择 stderr 是因为某些系统没有 GUI 图形环境,程序运行时抛出的提示信息无法显示导致应用启动失败,否则也可以使用 windows 模式)
加密 war 包时此处默认选中为 stderr,加密 jar 包时需要手动设置

点击左侧“Sentinel 开发商代码”,选择自己的开发号

3、部署加密后的文件
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,$JAVA_HOME/bin,/usr/lib,/usr/lib64 或者 windows 的系统路径 c:\windows\system32,c:\windows\sysWoW64 等,如果部署后运行仍然提示 H0400 错误(没有找到开发商库),请在环境变量中添加 LD_LIBRARY_PATH 变量,并将开发商库(名称中带数字的库)所在目录路径赋给此变量。

提示:java 程序加密的限制条件,请参考 LDK 的 release 文档和 envelope 的帮助文档,以下是目前已知的对这些类型的java程序加密后可能运行出错的描述:
使用 Hibernate 服务的方法。 
使用作为引导程序方法或引导程序属性参数创建的 Synthetic 方法的方法。 
动态方法。 
反射方法。 
反序列化或类型转换方法
 
 
本页关键词: 外壳加密 java