经过一周多时间的研究,终于对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包实现应用加密的使用方法的更多相关文章

  1. Tomcat 发布war包提示war包超出大小修改

    error信息: java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$Size ...

  2. 解决myeclipse10.1导出War包出错:Security Alert:Integrity check error

    解决myeclipse10.1导出War包出错:Security Alert:Integrity check error 解决myeclipse10.1不能导出war包报 ============== ...

  3. 【项目部署】部署项目以war包部署和解开以目录部署的区别

    我们都知道最简单的部署web项目的方式是打成war包直接仍在tomcat的webapps目录下,我上个项目也确实是这样做的,可是这给我们后期的维护带来了极大的不便,下面就简单研究一下以war包部署和解 ...

  4. eclipse如何导出WAR包

    WAR包是用于将java项目部署在中间件上的,例如部署在Tomcat,Weblogic,WebSphere等等,那么如何使用eclipse导出WAR包呢? 工具/原料 eclipse 方法/步骤   ...

  5. spring boot打war包发布

    由于公司一贯的方式都是将war包布在中间件tomcat下运行 所以这次springboot项目需要打war包 how to? 第一步:pom.xml 文件中,打包方式需要修改成war <pack ...

  6. 用Maven部署war包到远程Tomcat服务器

    过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...

  7. 关于war包 jar包 ear包 及打包方法

    关于war包 jar包 ear包 及打包方法 war包:是做好一个web应用后,通常是网站打成包部署到容器中 jar包:通常是开发的时候要引用的通用类,打成包便于存放管理. ear包:企业级应用 通常 ...

  8. maven 打war包tomcat服务器乱码问题

    今天用maven3的命令打war包,命令是mvn clean package -Dmaven.test.skip=true,打包后放在tomcat跑起来后发现tomcat的日志出现乱码. 后来在pom ...

  9. myeclipse10.7破解成功 但 无法打war包 提示:securecrt alert:integrity ch

    myeclipse10.7破解成功 但 无法打war包  提示:securecrt alert:integrity check error   找了好久才找到解决办法 http://download. ...

随机推荐

  1. 有关 Windows 10 中“适用于 Linux 的 Windows 子系统(Beta)”

    1.如何启用?(未来应该可从应用商店中直接安装) 在"控制面板"的"启用或关闭 Windows 功能"中进行勾选安装.(安装完成后需要重新启动) 2.然后呢? ...

  2. iOS底层原理总结 - 探寻block的本质(一)

        面试题 block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMu ...

  3. spring(四) 手动整合web项目(SSH)

    清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...

  4. linux netstat 统计连接数查看

    服务器上的一些统计数据 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数ps -ef|grep httpd|wc ...

  5. angular-resource版本差异问题

    在 AngularJS v1.3.0-beta.14 这个版本里,使用query方法,如果传递进来的数据不是数组,会报错. 在 AngularJS v1.2.18 这个版本里,使用query方法,如果 ...

  6. 【机器学习】随机森林(Random Forest)

    随机森林是一个最近比较火的算法 它有很多的优点: 在数据集上表现良好 在当前的很多数据集上,相对其他算法有着很大的优势 它能够处理很高维度(feature很多)的数据,并且不用做特征选择 在训练完后, ...

  7. 解决maven项目 maven install失败 错误 Failed to execute goal org.apache.maven.plugins

    1.Maven构建失败 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin: 2.3.4 :compile ( ...

  8. corntab被黑记录

    多出来的corntab 最近服务器经常出现负载过高的情况,经过运维排查,出现了一个corntab定时任务 不是开发的锅,别背 一开始运维认为是这个定时任务是我们开发的. 排查后,明确了服务器是被黑了. ...

  9. JD 题目1040:Prime Number (筛法求素数)

    OJ题目:click here~~ 题目分析:输出第k个素数 贴这么简单的题目,目的不清纯 用筛法求素数的基本思想是:把从1開始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下 ...

  10. Mac OS X上搭建Apache、PHP、MySQL的Web服务器

    mac OS 系统太帅了,安装php的环境如此简单,大赞一个! 转载自http://jingyan.baidu.com/article/39810a23e1939fb636fda6a9.html 在M ...