实现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. UVA699 下落的树叶 The Falling Leaves(二叉树的递归遍历建树)
  2. [MySQL] 查询一段时间记录
  3. Ecsotre 参考
  4. 25 Refs转发机制与在高阶组件中的使用
  5. 简析三星新专利,语音识别技术的新方法
  6. 一个JavaScript的小问题
  7. android开机动画多长时间_Android开机动画及黑屏
  8. 区块链四:共识机制——PBFT算法深入讲解
  9. 修改Google浏览器默认打开是金山毒霸网址
  10. linux7 (RHEL7.5)超详细系统安装步骤
  11. 采用最大连通域算法对三维医学图像分割结果做后处理
  12. 〖大前端 - 基础入门三大核心之CSS篇③〗- CSS选择器之复合选择器与伪类
  13. ansible playbook 中的变量用法相关介绍(三)----set_fact模块,跨play调用变量
  14. SQL server用户Sa登录失败的解决方法
  15. npm publish 发包报错400 Bad Request - Cannot publish over previously published version 1.0.0
  16. android 定位服务源码,android gps定位app源码(GpsTracker)
  17. Win11 首个预览版来了!
  18. 【Vue】 组件封装
  19. 用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符
  20. easy-mock搭建过程中,利用docker-compose运行easy-mock注意事项,重点是mongo版本错误导致构建失败

热门文章

  1. 编写Android Studio插件
  2. 详解正则表达式匹配一个反斜杠\的问题
  3. 如何用MATLAB进行电路仿真
  4. Como fazer uma要求GET de uma API REST em Java e转换器JSON em um objeto
  5. 夜空笼罩着大地...
  6. buildroot设置开机自动运行程序和自动登录
  7. excel比较两组或两列数据的相同项和不同项
  8. T560和为k的子数组
  9. helix qac 2022.1
  10. STC15单片机-整合代码,完成软件设计