基于 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"
两个子项目说明
lic-auth-server:用于开发者给客户生成 License证书
的示例代码
lic-auth-client:模拟需要给客户部署的业务项目
获取服务器信息
http://127.0.0.1:10000/license/getServerInfos
给客户机生成license
http://127.0.0.1:10000/license/generateLicense
headerContent-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": "" #客户机主板序列号 }}
在客户机使用license
在项目启动的时候安装证书
访问接口进行测试
http://127.0.0.1:10001/auth/api/1.0/getUserInfo
header
Content-Type application/json;charset=UTF-8
如果证书过期
源码
https://gitee.com/pingfanrenbiji/lic-auth
基于 TrueLicense 的项目证书验证相关推荐
- keytool生成证书_基于 TrueLicense 的项目证书验证
使用场景 1. 开发的软件产品在交付使用的时候,往往有一段时间的试用期,这期间我们不希望自己的代码被客户二次拷贝,这个时候 license 就派上用场了,license 的功能包括设定有效期.绑定 i ...
- java程序license验证_基于TrueLicense实现产品License验证功能
受朋友所托,需要给产品加上License验证功能,进行试用期授权,在试用期过后,产品不再可用. 通过研究调查,可以利用Truelicense开源框架实现,下面分享一下如何利用Truelicense实现 ...
- TrueLicense实现产品License验证
技术:apache-maven-3.3.9 +jdk1.8.0_102 运行环境:ideaIC-2020.1.3 + apache-maven-3.3.9+ jdk1.8.0_102 家精品内容,核心 ...
- Android https 自签名和CA证书验证(基于OkHttp)
Android HTTPS自签名和CA证书验证(基于OkHttp) HTTPS介绍 CA证书 自签名证书 问题描述 域名校验 OkHttp设置 总结 HTTPS介绍 HTTPS是一种通过计算机网络进行 ...
- 【基于物联网的智能草莓种植系统的设计与实现系列教程】8.项目整体验证(课程设计、毕设项目、树莓派、yolov5、物联网)
[基于物联网的智能草莓种植系统]BH1750 光照度传感器验证与参考代码 项目各章节跳转 树莓派环境说明 硬件连接 猜你需要 项目各章节跳转 可点击跳转到对应章节 ==> 努力更新中... 0. ...
- .NET Core微服务之基于IdentityServer建立授权与验证服务(续)
上一篇<.NET Core微服务之基于IdentityServer建立授权与验证服务>我们基于IdentityServer4建立了一个AuthorizationServer,并且继承了Qu ...
- glassfish hk2_使用GlassFish 3.1.2.2和Primefaces 3.4的JDBC领域和基于表单的身份验证
glassfish hk2 我的博客上最受欢迎的帖子之一是有关JDBC安全领域和带有Primefaces的GlassFish上基于表单的身份验证的简短教程. 在收到有关它不再适用于最新的GlassFi ...
- 使用GlassFish 3.1.2.2和Primefaces 3.4的JDBC领域和基于表单的身份验证
我的博客上最受欢迎的帖子之一是有关JDBC安全领域和带有Primefaces的GlassFish上基于表单的身份验证的简短教程. 在收到有关它不再适用于最新的GlassFish 3.1.2.2的评论后 ...
- 密码学专题 证书和CA指令 申请证书|建立CA|CA操作|使用证书|验证证书
Req指令介绍 功能概述和指令格式 req指令一般来说应该是提供给证书申请用户的工具,用来生成证书请求以便交给CA验证和签发证书.但是,OpenSSL的req指令的功能远比这样的要求强大得多,它不仅可 ...
最新文章
- MacOS无法登录App Store修复
- 昵图网学校计算机教室制度,ClassIn在线教室
- Unity3D 游戏引擎之平面小球重力感应详解【转】
- python代码该怎么简化_Python开发简化代码的六大技巧
- Mybatis配置文件参数定义
- C语言 显示器键盘io
- 实战:配置内网DNS实现内部域名解析
- Spring和Mybatis整合-原生dao开发
- 如何在没有原工程的情况下,利用vivado将bit文件转化成bin文件
- AQS框架原文翻译 - The java.util.concurrent Synchronizer Framework
- 重装系统win7教程
- PS实用小技巧--修改图片上的文字
- 简单图像滤镜功能的Java实现
- mysql可重复读概念_Mysql可重复读原理
- 编写程序描述影视歌三栖艺人
- 基于qt与mupdf库的pdf阅读器开发
- 如何把语音转文字转换
- 用PGP实现加密和解密全过程
- 从小数据量 MySQL 迁移数据到 TiDB
- unity 虚线 无视透视 近大远小
热门文章
- 解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)
- winsock使用java编写_利用Socket进行Java网络编程(一)
- #react 之ant design Pro 学习研究#----启动项目
- Radware LP 增加线路接口操作
- DotText源码学习——从配置文件Web.config入手(一)
- SQL Server -- 如何书写优雅、漂亮的SQL脚本?
- 七人のオンラインゲーマーズ 全年龄正式汉化补丁
- python 38day--CSS简介
- 多商铺购物车查询 排除重复商家
- 程序清单4.1_talkback.c程序_《C Primer Plus》P60