應用文檔
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 工具,如圖所示,在常規項中會顯示已經解析的所有方法,請先選擇要加密的方法進行測試:
點擊左側“Sentinel 開發商代碼”,選擇自己的開發號
對于 tomcat 下面的應用,jar 包通常是放置在應用目錄下的\WEB-INF\lib 內,此處先將 DGC 文件添加 .jar 后綴,然后與加密的 standard-1.1.2.jar 以及額外三個 safenet-*.jar 包,共同部署到應用目錄\WEB-INF\lib 下面。
(Envelope 提(ti)供(gong)了全(quan)選 select all 和全(quan)不選 clear all 的(de)功(gong)能(neng),并且可以(yi)(yi)在 Search list 中(zhong)通過關鍵字搜索對應的(de)方(fang)法(fa)。對于(yu)一些較大的(de)文(wen)件(jian)(jian),合理的(de)選擇要加密的(de)方(fang)法(fa),可以(yi)(yi)有(you)效(xiao)的(de)提(ti)高運(yun)行效(xiao)率(lv)(lv)和加密成功(gong)率(lv)(lv),關于(yu)方(fang)法(fa)選擇的(de)建(jian)議,請參(can)考 envelope 的(de)幫助文(wen)檔已經 release 文(wen)檔中(zhong)的(de)限制(zhi)條(tiao)件(jian)(jian))
在高級設置中,將 MESSAGE_OUTPUT_MODE 設置為(stderr)true,如下圖,
(選擇 stderr 是因為某(mou)些系統(tong)沒(mei)有 GUI 圖(tu)形環境,程序(xu)運行時拋出的提示(shi)(shi)信(xin)息(xi)無(wu)法顯(xian)示(shi)(shi)導致應(ying)用啟動失(shi)敗,否(fou)則也可以(yi)使用 windows 模式(shi))
加密 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 套件中已有文檔說明,此處不再贅述)
(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程序加密后可能運行出錯的描述:
提示:java 程序加密的限制條件,請參考 LDK 的 release 文檔和 envelope 的幫助文檔,以下是目前已知的對這些類型的java程序加密后可能運行出錯的描述:
使用 Hibernate 服務的方法。
使用作為引導程序方法或引導程序屬性參數創建的 Synthetic 方法的方法。
動態方法。
反射方法。
反序列化或類型轉換方法