Java实现License许可证控制(详细过程)
实现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许可证控制(详细过程)相关推荐
- JAVA冒泡排序算法(含详细过程代码讲解及优化)
冒泡排序算法拆分讲解及优化 java冒泡排序 一.代码的拆分讲解 从上面步骤,可以观察到每次的j都相对于前一趟进行-1操作,所以可以把这些操作套在一个for循环里来控制j即可. 二.冒泡排序的代码 优 ...
- win10双击运行.jar(JAVA环境安装)超详细过程
.jar文件的类型为Executable Jar File (.jar),可以直接双击执行,但是运行.jar需要安装相应的java环境. 其实.jar文件可以直接解压缩,里面都是.class文件,但是 ...
- java后台导出word,详细过程及趟过的坑
一.我使用的java导出word,由XML+FreeMarker来实现的,因此需要以下工具: 1.office.这里不能使用wps,因为wps由word文档转为xml文档时,解析会发生错误,导致最终模 ...
- linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程:
一. 解压安 - phpStudy...
linux配置java环境变量详细过程 直接上实现过程: 一. 解压安装jdk在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-lin ...
- 采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址...
采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址. Truelicense 它是一个开源java license ...
- (转载)CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程
CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程 绪论 应用场景 详细介绍 上传文件交互过程 下载文件交互过程 FastDFS搭建工具下载 下载工具 安装 libfas ...
- 网站渗透测试原理及详细过程
渗透测试实战 site:baidu.com 渗透测试思路 site:baidu.com 带你入门渗透测试的5个项目:https://www.jianshu.com/p/5b82e42ae346 渗透测 ...
- Java Learning Path(三)过程篇
Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法.因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基 ...
- java 怎么让图片运动,小编给你传授java怎么实现键盘控制图片移动
电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java怎么实现键盘控制图片移动的问题,如果我们遇到了java怎么实现键盘控制图片移动的情况,该怎么处理怎么才能解决ja ...
最新文章
- UVA699 下落的树叶 The Falling Leaves(二叉树的递归遍历建树)
- [MySQL] 查询一段时间记录
- Ecsotre 参考
- 25 Refs转发机制与在高阶组件中的使用
- 简析三星新专利,语音识别技术的新方法
- 一个JavaScript的小问题
- android开机动画多长时间_Android开机动画及黑屏
- 区块链四:共识机制——PBFT算法深入讲解
- 修改Google浏览器默认打开是金山毒霸网址
- linux7 (RHEL7.5)超详细系统安装步骤
- 采用最大连通域算法对三维医学图像分割结果做后处理
- 〖大前端 - 基础入门三大核心之CSS篇③〗- CSS选择器之复合选择器与伪类
- ansible playbook 中的变量用法相关介绍(三)----set_fact模块,跨play调用变量
- SQL server用户Sa登录失败的解决方法
- npm publish 发包报错400 Bad Request - Cannot publish over previously published version 1.0.0
- android 定位服务源码,android gps定位app源码(GpsTracker)
- Win11 首个预览版来了!
- 【Vue】 组件封装
- 用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符
- easy-mock搭建过程中,利用docker-compose运行easy-mock注意事项,重点是mongo版本错误导致构建失败