关于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从而成功部署应用。
关于sentinel LDK加密war包实现应用加密的使用方法的更多相关文章
- Tomcat 发布war包提示war包超出大小修改
error信息: java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$Size ...
- 解决myeclipse10.1导出War包出错:Security Alert:Integrity check error
解决myeclipse10.1导出War包出错:Security Alert:Integrity check error 解决myeclipse10.1不能导出war包报 ============== ...
- 【项目部署】部署项目以war包部署和解开以目录部署的区别
我们都知道最简单的部署web项目的方式是打成war包直接仍在tomcat的webapps目录下,我上个项目也确实是这样做的,可是这给我们后期的维护带来了极大的不便,下面就简单研究一下以war包部署和解 ...
- eclipse如何导出WAR包
WAR包是用于将java项目部署在中间件上的,例如部署在Tomcat,Weblogic,WebSphere等等,那么如何使用eclipse导出WAR包呢? 工具/原料 eclipse 方法/步骤 ...
- spring boot打war包发布
由于公司一贯的方式都是将war包布在中间件tomcat下运行 所以这次springboot项目需要打war包 how to? 第一步:pom.xml 文件中,打包方式需要修改成war <pack ...
- 用Maven部署war包到远程Tomcat服务器
过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...
- 关于war包 jar包 ear包 及打包方法
关于war包 jar包 ear包 及打包方法 war包:是做好一个web应用后,通常是网站打成包部署到容器中 jar包:通常是开发的时候要引用的通用类,打成包便于存放管理. ear包:企业级应用 通常 ...
- maven 打war包tomcat服务器乱码问题
今天用maven3的命令打war包,命令是mvn clean package -Dmaven.test.skip=true,打包后放在tomcat跑起来后发现tomcat的日志出现乱码. 后来在pom ...
- myeclipse10.7破解成功 但 无法打war包 提示:securecrt alert:integrity ch
myeclipse10.7破解成功 但 无法打war包 提示:securecrt alert:integrity check error 找了好久才找到解决办法 http://download. ...
随机推荐
- rpx
rpx(responsive pixel): 可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在iPhone6上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = ...
- Atitti opencv2.4 实现的人脸检测 attilax总结
Atitti opencv2.4 实现的人脸检测 attilax总结 1.1. 1.OpenCV人脸检测的方法1 1.2. /atiplat_img/src/com/attilax/facedetec ...
- android使用百度地图SDK 去掉百度Logo的小技巧
// 隐藏logoView child = mMapView.getChildAt(1); if (child != null && (child instanceof ImageVi ...
- 深入浅出HTTPS基本原理
基础知识准备:在了解HTTPS的基本原理之前,需要先了解如下的基本知识. 一.什么是HTTPS,TLS,SSL HTTPS,也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被 ...
- centos7 开启特定的端口
systemctl是centos7的服务管理工具中主要的工具,它融合之前的service和chkconfig功能于一体; 开机时启动:systemctl enable firewalld.servic ...
- 生产机器禁止ROOT远程SSH登录
vim /etc/ssh/sshd_config PermitRootLogin no /etc/init.d/sshd restart
- Fluent UDF【6】:预处理命令
今天要讲的内容是关于C语言的预处理.搞清楚了这个,就可以分析UDF中的各种头文件源代码,从此写UDF不求人. 1 关于预处理 在UDF的各种头文件中(文件路径D:\Program Files\ANSY ...
- flink Job提交过程
https://www.jianshu.com/p/0cdfa2a05ebd http://vinoyang.com/2017/04/02/flink-runtime-client-submit-jo ...
- Android 编程下 AlarmManager
对应 AlarmManager 有一个 AlarmManagerServie 服务程序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册的各类闹铃并适时的设置即将触发的闹铃给闹铃设备 ( 在系 ...
- 项目中开机自启动的 node-webkit开机自启动
node-webkit开机自启动 Posted in 前端, 后端 By KeenWon On 2014年8月11日 Views: 1,215 node-webkit没有提供开机自启动的接口,在git ...