關於sentinel LDK加密war包實現應用加密的使用方法


經過一周多時間的研究,終於對sentinel產品的使用有個基本的掌握。其中走了不少的彎路,特此記錄一下,以備后面回顧。

開發前的用料准備:

windows 10 x64位, tomcat7 x64bit(這里筆者前面在64bit的windows10中使用32bit的tomcat,加密之后運行不成功,可能與sentinel成品本身缺陷有關)

jdk1.7.80 64bit

sentinel加密的大致流程如下:

1.在windows中安裝sentinel產品。安裝好之后打開套件出現如下圖所示的主界面:

2.在上圖的其他工具中使用sentinel主鎖向導導入主鎖。導入主鎖過程中需要下載很多api文件,如果網絡不好,可以向銷售商索要離線文件導入;

導入主鎖成功后會生成一個開發商代碼(開發號),注意這個開發號是與主鎖一一對應的。

 

3.點擊上圖中的EMS,進入EMS系統,在此系統中規划定義系統功能(product id,feature id),其實在EMS中主要是為客戶鎖燒制一個功能id(feature id),

注意這個feature id 很重要,后面在envelop工具中為應用加密時需要用到。

4.在envelop工具中為應用加密。

 

 

sentinel加密產品有如下幾種加密方案(針對於java開發的jar,war或class文件,對於exe文件加密則不用這么麻煩);

方案1.加密jar或war包中某個class文件的某些method實現功能模塊的授權使用。其實不推薦這種方案(對於jdk和java某些函數使用上有限制),對於功能模塊授權,軟件開發者會在系統中開發功能授權模塊,完全沒必要使用第三方的。

方案2.加密java.exe和需要被保護的war,jar或dll或class文件。這種方案其實也有弊端。java.exe作為jre中核心文件,此文件被加密,將會影響其他非加密web應用的正常運行,即拔掉客戶鎖之后,凡事依賴此jre的java應用運行都會報錯。

方案3.加密tomcat.exe和需要被保護的war,jar或dll或class文件。這是我后期將會采用的方案,雖然也有弊端(被加密的tomcat正常運行必須客戶鎖插上計算機),但是可以在一台計算機上部署多個tomcat解決這個弊端。本章着重講解這個方案。

方案4.調用sentinel的api進行二次開發(使用api可對客戶鎖進行一系列的操作,如讀取feature id,讀寫客戶鎖中的內存信息)。本章先不介紹這個方案。

 

 

5.在對tomcat和demo-nosec.war(暫以此war包為例講解)加密后生成如下文件:

其中,被加密的war包使用解壓工具解壓會提示壓縮包已損壞,因為此時已經被加密了,所以不能解壓,tomcat7.exe文件大小會比原tomcat7.exe大些,因為sentinel像此exe中附加了些解密算法文件包;

6.將壓縮版的tomcat安裝為windows服務(如果你下載的是windows安裝包,則忽略此步)。注意啟動tomcat有兩種獨立的方式,一是雙擊運行startup.bat腳本,將會以dos模式運行tomcat;二是以管理員身份打開cmd窗口,cd到

tomcat的bin目錄,運行命令: service.bat install MyTomcat7  安裝tomcat為windows服務(service.bat remove MyTomcat7 卸載tomcat服務),安裝成功后,啟動服務如果失敗,如下圖,多半是沒有為tomcat設置jvm等參數。

以管理員身份運行tomcat7w.exe,在彈出的窗體中找到java也簽,填寫如下圖所示的參數。

(java classpath完整值為:G:\software\apache-tomcat-7.0.75-x64\bin\bootstrap.jar;G:\software\apache-tomcat-7.0.75-x64\bin\tomcat-juli.jar)

 

 

 

按照如上圖所示填寫參數點擊應用后,再次在windows服務中啟動tomcat7服務,如果還是失敗,則在tomcat的bin目錄中直接雙擊tomcat7.exe文件,即可彈出tomcat的啟動界面。

7.將第五步加密后生成的tomcat7.exe,hasp_rt.exe和haspvlib_103268.dll文件拷貝至tomcat的bin目錄下,將第五步加密生成的demo-nosec.war包放在tomcat的webapps目錄下,雙擊bin目錄中的tomcat7.exe查看啟動情況。

插上客戶鎖和進程中有tomcat7.exe的情況下是能夠正確解密war包並部署應用的。

 

部署成功后在瀏覽器中訪問:

這里需要說明的是,一定要保證任務進程中存在被加密的tomcat7.exe進程。

簡單說一下sentinel加密使用原理:一個主鎖擁有一個開發號,在EMS系統中使用此開發號為客戶鎖燒制一個功能id,在加密工具中為tomcat.exe附加上解密算法A和被加密的war包文件名稱列表B,

tomcat的啟動依賴於客戶鎖是否插上。在tomcat啟動后,在webapps中查找應用名稱是否存在於B中,如果有C存在於列表B中,則不管該C加密與否,都會強制使用A對C包進行解密,如果C沒有加密,則會給出打開壓縮包錯誤的提示從而造成未加密的war應用部署失敗。如果C加密,則tomcat.exe正好使用A正確解密C從而成功部署應用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM