经过一周多时间的研究,终于对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. 深入理解Linux内核-内存管理

    内核如果给自己分配动态内存 动态内存:RAM的某些部分被永久打分配给内核,用来存放内核代码以及静态内核数据结构:剩余的部分被称为动态内存 连续物理内存区管理: 页框管理:1.页大小的选择,通常情况下主 ...

  2. django搭建一个小型的服务器运维网站-拿来即用的bootstrap模板

    目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...

  3. Requests: 让 HTTP 服务人类

    requests 2.18.1文档 requests流式post文件 Calling SOAP Web service using requests module of

  4. [Windows Azure] How to use the Table Storage Service

    How to use the Table Storage Service version 1.7 version 2.0 This guide will show you how to perform ...

  5. Android 编程下背景图片适配工具类

    package cn.sunzn.util; import android.content.Context; import android.graphics.Bitmap; import androi ...

  6. Asp.Net计算程序执行速度

    long t1 = DateTime.Now.Ticks; //执行程序,例如处理100个文件 long t2 = DateTime.Now.Ticks; Response.Write("执 ...

  7. Markdown学习(一)

    先从了解开始. 1 什么是标记语言(Markup Language)? 可以参考下wiki Markup language:https://en.wikipedia.org/wiki/Markup_l ...

  8. 在IIS7上部署aspx网站

    在IIS7上部署aspx网站 2016-12-06 1 示例代码 WebForm.aspx内容: <html> <head> <script language=" ...

  9. mysql关联更新update

    https://blog.csdn.net/babyfish13/article/details/78082844 ****************************************** ...

  10. 【Java】HashTable和HashMap区别

    ①继承不同 public class Hashtable extends Dictionary implements Map public class HashMap extends Abstract ...