LicenseDemo

项目介绍

在基于Spring的项目中使用 TrueLicense生成和验证License证书(服务器许可)的示例代码

技术依赖:

Spring Boot:项目基础架构

TrueLicense:基于Java实现的生成和验证服务器许可的简单框架

环境依赖:

JDK8+

利用jdk keytool工具制作证书:

利用jdk keytool工具生成证书

keytool -genkeypair -keysize 1024 -validity 3650 -alias "秘钥别名" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令" -keypass "秘钥口令" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"

注意:所有口令必须包含字母数字

eg:

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 "秘钥别名" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令" -file "证书名称.cer"

eg:

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

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

keytool -import -alias "别名" -file "证书名称.cer" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令"

eg:

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

两个子项目说明:

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

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

lic-auth-server项目:

对外发布了两个RESTful接口:

(1)获取服务器硬件信息 :

请求地址:http://127.0.0.1:10000/license/getServerInfos

返回:

{

"msg": "success",

"code": 1,

"data": {

"ipAddress": [

"2001:0:2841:aa90:34fb:8e63:c5ce:e345",

"192.168.153.155" #客户机ip

],

"macAddress": [

"00-00-00-00-00-00-00-E0",

"B0-52-16-27-F5-EF" #客户机mac地址

],

"cpuSerial": "178BFBFF00660F51", #客户机cpu序列号

"mainBoardSerial": "L1HF7B400HZ" #客户机主板序列号

},

"timestamp": 1552532098275

}

(2)生成证书 :

请求地址:`http://127.0.0.1:10000/license/generateLicense

请求时需要在Header中添加一个 Content-Type ,其值为:application/json;charset=UTF-8。请求参数(json格式)如下:

{

"subject": "license_sub", #证书subject

"privateAlias": "privateKey", #秘钥别名

"keyPass": "deepglint_key_pwd123", #秘钥口令

"storePass": "deepglint_store_pwd123", #秘钥库口令

"licensePath": "D:/dev/code-bak/license/license.lic", #存放license文件位置

"privateKeysStorePath": "D:/dev/jdk1.8_64/bin/privateKeys.keystore", #秘钥库文件文件

"issuedTime": "2019-03-14 00:00:01", #license有效期起始时间

"expiryTime": "2019-03-14 18:01:00", #license有效期截止时间

"licenseCheckModel": {

"ipAddress": ["192.168.153.155"], #客户机ip

"macAddress": ["B0-52-16-27-F5-EF"], #客户机mac地址

"cpuSerial": "178BFBFF00660F51", #客户机cpu序列号

"mainBoardSerial": "L1HF7B400HZ" #客户机主板序列号

}

}

lic-auth-client项目:

项目启动时安装证书,需要license.lic和先前生成的publicCerts.keystore文件,通过com.deepglint.license.LicenseCheckListener.java类实现。API访问时校验证书的可用性,通过com.deepglint.handler.LicenseCheckInterceptor.java类实现。

(1)访问受保护资源

请求地址:http://127.0.0.1:10001/auth/api/1.0/getUserInfo

说明:Headers加入参数Content-Type:application/json;charset=UTF-8

返回说明:

如果证书校验失败,返回

{

"msg": "您的证书无效,请核查服务器是否取得授权或重新申请证书!",

"code": 0,

"data": null,

"timestamp": 1552550699097

}

否则调用API成功

特别说明:

服务器许可证书,lic-auth: 基于Spring的项目中使用 `TrueLicense `生成和验证`License证书`(服务器许可)的示例代码...相关推荐

  1. spring mvc项目中利用freemarker生成自定义标签

    2019独角兽企业重金招聘Python工程师标准>>> spring mvc项目中利用freemarker生成自定义标签 博客分类: java spring mvc +freemar ...

  2. 在Spring Boot项目中使用Spock框架

    转载:https://www.jianshu.com/p/f1e354d382cd Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring B ...

  3. Spring Boot项目中使用RestTemplate调用https接口出现 unable to find valid certification path to requested target

    问题描述:Spring Boot项目中使用RestTemplate调用https接口出现以下错误: PKIX path building failed: sun.security.provider.c ...

  4. vue 打开html流_在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  5. Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能

    Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...

  6. spring boot 项目源码_Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent

    前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent><groupId& ...

  7. scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...

    在java开发中定时任务的实现有多种方式,jdk有自己的定时任务实现方式,很多框架也有定时任务的实现方式.这里,我介绍一种很简单的实现方式,在Spring Boot项目中使用两个注解即可实现. 在sp ...

  8. Spring Boot 项目中Java对象的字符串类型属性值转换为JSON对象的布尔类型键值的解决方法及过程

    文章目录 场景描述 示例说明 解决历程 @JsonFormat是否能解决问题? 万能方案-调试 替代方案 补充知识 Java对象与JSON对象的序列化与反序列化 相关注解说明 后记 场景描述 在Spr ...

  9. 基于ESlint在项目中扩展自己的ESlint规则

    目录 效果展示 源码分析 在团队开发中,经常会碰到这样的场景: 来一个新人,碰到需求需要处理日期,但不知道项目中已经有封装好的日期库,就自己做了一个轮子 又来一个新人,碰到弹层用官方的是Modal,但 ...

  10. maven多模块项目部署到服务器,GitHub - baxias/foweb: 一个基于 Spring+SpringMVC+Mybatis 的Maven多模块项目。(实现前后端分离的服务器端)...

    Foweb Framework A multi-modules maven project base on Spring+SpringMVC+Mybatis. 一个基于 Spring+SpringMV ...

最新文章

  1. 【学习笔记】超简单的多项式除法(含完整证明)
  2. Android之 AndroidManifest.xml 文件解析
  3. javascript学习(三) 内置对象
  4. springmvc的配置
  5. WebService事务处理
  6. 「PowerBI」使用TabularEditor进行PowerBIDeskTop模型开发最佳实践
  7. junit:junit_JUnit和Hamcrest:在assertEquals上进行改进
  8. PostgreSQL 的一个简单连接和查询操作——示例
  9. 一流企业都在做数据治理,还用百万年薪招人,想做的无非这10点
  10. html柳树动画,3D教程-柳树生长动画
  11. php安装redis扩展'checking for igbinary includes... configure: error: Cannot find igbinary.h'解决方法...
  12. 第一天 echo test (()) [[]]
  13. 爬取小说《重生之狂暴火法》 1~140章
  14. 用remastersys备份LINUX,注意备份盘的空间占用
  15. linux系统测网速工具
  16. 图文详解YUV420数据格式
  17. arcgis重心迁移分析_ArcGIS支持下三峡库区适度人口重心迁移研究
  18. Maven解决版本冲突的问题
  19. 501 -- Introduction to Unsupervised Method
  20. linux 编译pcl,PCL/python-pcl Linux源码编译安装

热门文章

  1. mysql strtolower_自己写的mysql类_PHP教程 - strtolower
  2. 孩子们的世界很大,很大...(评刘海强日记)
  3. python 爬虫1
  4. wireshark使用Lua解析带有固定头和长度
  5. 高项题目--工期计算
  6. 针对Informer中时序数据ETT油温数据分析
  7. 大数据与云计算学习:Python网络数据采集
  8. 缺失值填充的几种方法
  9. element-ul基本使用
  10. 帝国 loginjs.php,帝国CMS的安装方法