关于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. ...
随机推荐
- 冰淇淋三明治 (Android 4.0)介绍
原文:http://android.eoe.cn/topic/summary 冰淇淋三明治 (Android 4.0) 是 Android 在设计上的一个里程碑.它将 Honeycomb 提供给平板的 ...
- 菜鸟学SSH(十七)——基于注解的SSH将配置精简到极致
很早之前就想写一篇关于SSH整合的博客了,但是一直觉得使用SSH的时候那么多的配置文件,严重破坏了我们代码整体性,比如你要看两个实体的关系还得对照*.hbm.xml文件,要屡清一个Action可能需要 ...
- Berkeley Packet Filter (BPF) BCC
http://www.brendangregg.com/ebpf.html https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-b ...
- (原创)谈谈boost.asio的异步发送
在上一篇博文中提到asio的异步发送稍微复杂一点,有必要单独拿出来说说.asio异步发送复杂的地方在于: 不能连续调用异步发送接口async_write,因为async_write内部是不断调用asy ...
- Specular Aliasing与Specular Leaking
最近做高质量实时HDR PBR渲染中碰到了2个关键问题,若干思考如下: 问题1: 极高的动态范围HDR+高级BRDF+相对较低的采样率(比方说不考虑子像素的原始分辨率),在这3项因素的综合作用下,Sp ...
- 使用windowAnimations定义Activity及Dialog的进入退出效果
看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了.设置Dialog首先通过getWindow()方法获取它的窗口,然后通过getAttrib ...
- 【delphi】多线程与多线程同步
在 Delphi 中使用多线程有两种方法: 调用 API.使用 TThread 类; 使用 API 的代码更简单. CreateThread function CreateThread( lpThre ...
- 【ARM】2410裸机系列-uart串口通信
开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置 配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...
- 原生js实现文件上传
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用 Jackson 树模型(tree model) API 处理 JSON
http://blog.csdn.net/gao1440156051/article/details/54091702 http://blog.csdn.net/u010003835/article/ ...