实现license控制需要准备:

1.密钥对

2.生成许可证

3.将配置代码配置到给客户部署的项目中

第一步:我们可以通过Jdk(建议jdk1.8)自带的keytool工具生成,在命令行(win+r输入cmd)输入以下命令:

#生成命令keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -keypass "private_password1234" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"

参数说明:

  • keysize 密钥长度
  • validity 私钥的有效期(单位:天)
  • alias 私钥别称
  • keystore 指定私钥库文件的名称 (生成在当前目录)
  • storepass 指定私钥库的密码 (keystore 文件存储密码)
  • keypass 指定别名条目的密码 (私钥加解密密码)
  • dname 证书个人信息
    • CN 为你的姓名
    • OU 为你的组织单位名称
    • O 为你的组织名称
    • L 为你所在的城市名称
    • ST 为你所在的省份名称
    • C 为你的国家名称

这一步可能报错:像下面这种情况(有可能是jdk过高导致的),

那就执行这段命令(我指定了仓库类型和密钥就可以了)

keytool -genkeypair -keysize 1024 -storetype jks -keyalg DSA -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -keypass "private_password1234" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"

参数说明:

-storetype 指定仓库类型, JKS、 JCEKS、 PKCS12 等

-keyalg 指定密钥的算法, RSA、 DSA 等,默认DSA

#导出命令

keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -file "certfile.cer"

参数说明:

  • alias 私钥别称
  • keystore 指定私钥库文件的名称 (如果没有带路径,在当前目录查找)
  • storepass 指定私钥库的密码
  • file 导出证书文件名称
#导入命令keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "public_password1234"

参数说明:

  • alias 公钥别称
  • file 证书文件名称
  • keystore 公钥文件名称
  • storepass 指定私钥库的密码

命令行当前路径可以看到以下三个文件:

  • privateKeys.keystore(私钥)提供给生成证书使用
  • publicCerts. keystore(公钥)提供给证书认证使用
  • certfile.cer后续步骤用不到,可以删除

第二部:生成许可证.

生成许可证的工具地址是:licenseDemoServe: 实现license控制,生成许可证

获取到代码之后配置文件中可以看到

这是证书生成路径,如果前端没有指定生成路径就会生成在这个路径里,这个路径不存在生成失败。

控制类提供了两个接口:获取硬件信息和生成许可证。

获取硬件信息接口:localhost:8081/license/getServerInfos?osName=windows

获取windos硬件信息,

参数osName的值可以是windows和linux。

参数osName非必须。

获取结果是这样的:

{"ipAddress": ["192.168.1.43"],"macAddress": ["00-E0-4C-A3-02-25"],"cpuSerial": "BFEBFBFF000806D1","mainBoardSerial": "Default"
}

生成许可证的接口是http://localhost:8081/license/generateLicense

参数实例如下:

{"subject": "license_demo","privateAlias": "privateKey","keyPass": "private_password1234","storePass": "public_password1234","licensePath": "C:/Users/Administrator/license.lic","privateKeysStorePath": "C:/Users/Administrator/privateKeys.keystore","issuedTime": "2012-07-10 00:00:01","expiryTime": "2022-11-16 18:41:00","consumerType": "User","consumerAmount":1,"description": "这是证书描述信息","licenseCheckModel":{"ipAddress": ["192.168.1.43"],"macAddress": ["00-E0-4C-A3-02-25"],"cpuSerial": "BFEBFBFF000806D5","mainBoardSerial": "Default"
}
}

返回结果如下

{"result": "ok","msg": {"subject": "license_demo","privateAlias": "privateKey","keyPass": "private_password1234","storePass": "public_password1234","licensePath": "C:/Users/Administrator/license.lic","privateKeysStorePath": "C:/Users/Administrator/privateKeys.keystore","issuedTime": "2012-07-10 00:00:01","expiryTime": "2022-11-16 18:41:00","consumerType": "User","consumerAmount": 1,"description": "这是证书描述信息","licenseCheckModel": {"ipAddress": ["192.168.1.43"],"macAddress": ["00-E0-4C-A3-02-25"],"cpuSerial": "BFEBFBFF000806D5","mainBoardSerial": "Default"}}
}

然后创立一个客户端测试。测试代码如下

https://gitee.com/lookat-wind/licnse-demo-cilent.git

需要检验证书的模块就在模块中加入下面的类。启动的时候就安装检验证书。

特别注意:封装硬件信息的model类包名一定要一致。或者你可以合并到一个公共模块。

其他配置信息:

在服务端properties文件中设置生成许可证的路径,参数生成路径为空时就生成在此路径。

客户端的properties文件中配置参数信息,包括证书名,公钥别称,公钥密码,证书位置,公钥位置。

完成,项目启动时安装证书,安装失败项目启动失败.

Java实现License许可证控制(详细过程)相关推荐

  1. JAVA冒泡排序算法(含详细过程代码讲解及优化)

    冒泡排序算法拆分讲解及优化 java冒泡排序 一.代码的拆分讲解 从上面步骤,可以观察到每次的j都相对于前一趟进行-1操作,所以可以把这些操作套在一个for循环里来控制j即可. 二.冒泡排序的代码 优 ...

  2. win10双击运行.jar(JAVA环境安装)超详细过程

    .jar文件的类型为Executable Jar File (.jar),可以直接双击执行,但是运行.jar需要安装相应的java环境. 其实.jar文件可以直接解压缩,里面都是.class文件,但是 ...

  3. java后台导出word,详细过程及趟过的坑

    一.我使用的java导出word,由XML+FreeMarker来实现的,因此需要以下工具: 1.office.这里不能使用wps,因为wps由word文档转为xml文档时,解析会发生错误,导致最终模 ...

  4. linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程: 一. 解压安 - phpStudy...

    linux配置java环境变量详细过程 直接上实现过程: 一. 解压安装jdk在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-lin ...

  5. 采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址...

    采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址. Truelicense 它是一个开源java license ...

  6. (转载)CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程

    CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程 绪论 应用场景 详细介绍 上传文件交互过程 下载文件交互过程 FastDFS搭建工具下载 下载工具 安装 libfas ...

  7. 网站渗透测试原理及详细过程

    渗透测试实战 site:baidu.com 渗透测试思路 site:baidu.com 带你入门渗透测试的5个项目:https://www.jianshu.com/p/5b82e42ae346 渗透测 ...

  8. Java Learning Path(三)过程篇

    Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法.因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基 ...

  9. java 怎么让图片运动,小编给你传授java怎么实现键盘控制图片移动

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java怎么实现键盘控制图片移动的问题,如果我们遇到了java怎么实现键盘控制图片移动的情况,该怎么处理怎么才能解决ja ...

最新文章

  1. Java 8中Stream API的这些奇技淫巧!你都Get到了吗?
  2. XML序列化和反序列化(C#)
  3. ApplicationIdle
  4. 2013 全国高校计算机等级考试(广西考区)一级笔试试题,全国高校计算机等级考试(广西考区)一级笔试试题卷.PDF...
  5. 2021年全新各方向IT职业技能图谱
  6. zabiix监控磁盘io
  7. android view绘制过程
  8. 3631: [JLOI2014]松鼠的新家
  9. [2018.10.11 T3] 欠钱
  10. 华为煤矿军团首登央视 | 发布会金句爆棚
  11. jetson nano开发使用的基础详细分享
  12. Ubuntu 12.04 常用三种输入法及键盘错乱的调整
  13. 【ipad 作为 mac 分屏分辨率调整 | sidercar 分辨率调整】
  14. ev4加密视频转mp4工具使用教程
  15. Atitit ffmpeg功能表 多媒体处理类库工具 音频视频 1.1.ffmpeg音视频合成  1.2.Atitit 视频音频分离 提取法 1.3.ffmpeg对视频封装和分离 使用ffmpeg对
  16. 网易云---手机验证码登录
  17. 高斯混合模型参数估计的EM算法
  18. 笔记(十):redis集群
  19. vue+supermap三维地图(场景 模型 打包问题 报错)
  20. 2018年,30而立,30而已

热门文章

  1. t1商贸宝服务器信息,T1商贸宝BACKUP里的数据怎么恢复
  2. 快速傅里叶反变换(一维)
  3. 在国内有几个CCIE考点?
  4. 修改注册表快速新建txt文本文档
  5. 使用getParameterValues方法接收参数的两种方法
  6. tec控制pid程序_利用 SPICE 设计 TEC 温度环路 PID 控制
  7. 第一章Python概述
  8. Maxon Cinema 4D Release 21可立即供货
  9. 缺货笼罩供应链:智能手机“涨”声一片
  10. 基于L298N的STM32的直流电机PWM调速控制