基于 TrueLicense 的项目证书验证

简介: 基于 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"


image.png


image.png


  • lic-auth-server:用于开发者给客户生成License证书的示例代码


  • lic-auth-client:模拟需要给客户部署的业务项目


获取服务器信息


http://127.0.0.1:10000/license/getServerInfos


image.png


给客户机生成license


image.png


image.png


image.png


image.png


源码


https://gitee.com/pingfanrenbiji/lic-auth


相关文章
|
1月前
|
安全 测试技术 API
在实际应用中,如何判断是否需要创建信任所有证书的 TrustManager
在实际应用中,判断是否需要创建信任所有证书的TrustManager时,需考虑安全性与便捷性的平衡。通常,开发和测试环境可使用信任所有证书的TrustManager,但生产环境应严格验证证书,确保通信安全。
99 56
|
28天前
|
缓存 应用服务中间件 网络安全
如何使用OCSP进行证书验证
如何使用OCSP进行证书验证
28 4
|
2月前
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
444 2
|
7月前
|
算法 数据安全/隐私保护
客户端验证 证书解析
客户端验证 证书解析
94 7
|
7月前
|
存储 弹性计算 运维
客户端证书自动颁发脚本
【4月更文挑战第30天】
58 1
|
Windows
代码签名证书如何申请
代码签名证书如何申请
216 0
|
算法 安全 网络安全
客户端如何验证ssl/tls证书的合法性
客户端是如何验证ssl/tls证书的合法性
562 1
|
安全 开发者
代码签名证书?
代码签名证书(Code Signing Certificates)是用来标识软件或代码的来源以及软件开发者的真实身份,同时保证软件不被恶意篡改,签名后的软件下载安装时不会弹出安全警告,用户能够有效的辨别该软件的可信度,从而建立良好的软件品牌信誉度。
432 0
代码签名证书?
|
存储 数据安全/隐私保护
什么是代码签名证书?
代码签名证书的使用在出版商和软件开发人员中非常普遍。它通过在发布之前对不同的应用程序、宏、插件、可执行文件和其他文件使用数字签名对其进行签名,从而帮助提供唯一身份。
219 0
什么是代码签名证书?
|
网络协议 算法 网络安全
网络基础 记一次HTTPS证书验证测试过程
网络基础 记一次HTTPS证书验证测试过程
145 0

热门文章

最新文章