keytool生成证书_基于 TrueLicense 的项目证书验证

使用场景

1、 开发的软件产品在交付使用的时候,往往有一段时间的试用期,这期间我们不希望自己的代码被客户二次拷贝,这个时候 license 就派上用场了,license 的功能包括设定有效期、绑定 ip、绑定 mac 等。

2、 授权方直接生成一个 license 给使用方使用,如果需要延长试用期,也只需要重新生成一份 license 即可,无需手动修改源代码。

原理简介

1、TrueLicense 是一个开源的证书管理引擎,详细介绍见 https://truelicense.java.net/

2、license 授权机制的原理

  • 生成密钥对,包含私钥和公钥。
  • 授权者保留私钥,使用私钥对授权信息诸如使用截止日期,mac 地址等内容生成 license 签名证书。
  • 公钥给使用者,放在代码中使用,用于验证 license 签名证书是否符合使用条件

生成证书

利用jdk keytool工具制作证书

keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "deepglint_store_pwd123" -keypass "deepglint_key_pwd123" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"

利用jdk keytool工具导出证书文件

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

利用jdk keytool工具将证书文件导入到证书库中

keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "deepglint_store_pwd123"
10e4caecac917f06cebc325088b07f3c.png

两个子项目说明

9c4c2a8e42a2bdb68aea793fec71eb5f.png
  • lic-auth-server:用于开发者给客户生成License证书的示例代码
  • lic-auth-client:模拟需要给客户部署的业务项目

获取服务器信息

http://127.0.0.1:10000/license/getServerInfos
d0c3140002e780276631b8bfa335ec98.png

给客户机生成license

baf77b99c85d942e2b3a885d075ccc9d.png
http://127.0.0.1:10000/license/generateLicenseheaderContent-Type application/json;charset=UTF-8{ "subject": "license_sub",    #证书subject "privateAlias": "privateKey",  #秘钥别名        "keyPass": "deepglint_key_pwd123",    #秘钥口令 "storePass": "deepglint_store_pwd123",   #秘钥库口令 "licensePath": "/Users/mengfanxiao/Documents/work/license/cert/license.lic",   #存放license文件位置 "privateKeysStorePath": "/Users/mengfanxiao/Documents/work/license/cert/privateKeys.keystore",     #秘钥库文件文件 "issuedTime": "2020-11-25 00:00:01",  #license有效期起始时间   "expiryTime": "2020-11-25 22:00:00",   #license有效期截止时间  "licenseCheckModel": {  "ipAddress": ["192.168.5.121"],       #客户机ip  "macAddress": ["A4-83-E7-BE-3D-D9"],  #客户机mac地址     "cpuSerial": "",         #客户机cpu序列号  "mainBoardSerial": ""    #客户机主板序列号 }}
b39b2310c642a8fb5109004b5d5da83d.png

在客户机使用license

420df8c1f52e4beb5a940c700995de7e.png

在项目启动的时候安装证书

6545b58167c7f263b88286b4fa902c4c.png

访问接口进行测试

http://127.0.0.1:10001/auth/api/1.0/getUserInfoheaderContent-Type application/json;charset=UTF-8
7e954b6ecac33ff1e043835cef05ed84.png

如果证书过期

f179e220b29e4194136df36e0ff21f16.png

源码

https://gitee.com/pingfanrenbiji/lic-auth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值