Spring Boot项目中使用 TrueLicense 生成和验证License的详细步骤

 更新时间:2023年10月18日 09:17:34   作者:layman·  
这篇文章主要介绍了Spring Boot项目中使用 TrueLicense 生成和验证License,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1、Linux

在客户linux上新建layman目录,导入license.sh文件,

[root@localhost layman]# mkdir -p /layman

license.sh文件内容:

#!/bin/bash
# 1.获取要监控的本地服务器IP地址
IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`
echo "IP地址:"$IP
#
# 2.获取默认网卡Mac地址
mac_address=`cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address`
echo "默认网卡Mac地址:"$mac_address
#
# 3.获取CPU序列号
CPU_serial_number=`dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'`
echo "CPU序列号:"$CPU_serial_number
#
# 4.获取主板序列号
Motherboard_serial_number=`sudo dmidecode -s system-serial-number`
echo "主板序列号:"$Motherboard_serial_number

执行sh文件,会在该目录下生成license.log

[root@localhost layman]# sh license.sh 2>&1 | tee license.log

2、Windows

创建获取IP,mac,CPU,主板信息.bat文件,双击运行,会在D盘生成ComputerInfos.txt文件。
.bat文件内容如下:

@echo off
echo 开始获取本机IP、MAC、CPU序列号、主板序列号信息,请稍等......
if  exist D:\ComputerInfos.txt (
echo ===================本机已删除旧的信息文件,请重新运行获取!!!==================
del D:\ComputerInfos.txt 
) else (
rem 查看本机IP信息
echo 1-本机IP信息----------------------------------------------------------------------------:>>D:\ComputerInfos.txt 
 ipconfig>>D:\ComputerInfos.txt 
rem 查看本机mac信息
echo 2-本机mac信息---------------------------------------------------------------------------:>>D:\ComputerInfos.txt 
getmac>>D:\ComputerInfos.txt 
rem 查看本机CPU信息
echo 3-本机CPU序列号-----------------------------------------------------------------------:>>D:\ComputerInfos.txt 
 wmic cpu get processorid>>D:\ComputerInfos.txt 
rem 4-查看本机主板信息
echo 4-主板序列号----------------------------------------------------------------------------:>>D:\ComputerInfos.txt
wmic baseboard get SerialNumber>>D:\ComputerInfos.txt 
echo "===================本机信息保存在 D:\ComputerInfos.txt================ "
)
pause

步骤

1、使用JDK自带的 keytool 工具生成公私钥证书库:

在C:\盘中新建layman目录,在 C:\layman 中cmd执行如下命令:
假如我们设置公钥库密码为:public_password1234,私钥库密码为:private_password1234,则生成命令如下:

#生成命令
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"
#导出命令
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -file "certfile.cer"
#导入命令
keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "public_password1234"

上述命令执行完成之后,会在当前路径下生成三个文件,分别是:privateKeys.keystore、publicCerts.keystore、certfile.cer。其中文件certfile.cer不再需要可以删除,文件privateKeys.keystore用于当前的 ServerDemo 项目给客户生成license文件,而文件publicCerts.keystore则随应用代码部署到客户服务器,用户解密license文件并校验其许可信息。

2、为客户生成license文件:

将LicenseDemo代码拉取到本地(联系作者获取源码),部署项目LicenseDemo,启动ServerDemo服务。
使用postman工具:
1、get请求获取客户机的ip、mac、cpu序列号、主板串行号等信息

get
http://127.0.0.1:7000/license/getServerInfos
Content-Type      application/json;charset=UTF-8

2、post请求生成license.lic文件

post
http://127.0.0.1:7000/license/generateLicense
请求时需要在Header中添加一个 Content-Type ,其值为:application/json;charset=UTF-8。参数示例如下:
Content-Type      application/json;charset=UTF-8
{
	"subject": "layman_license",
	"privateAlias": "privateKey",
	"keyPass": "private_password1234",
	"storePass": "public_password1234",
	"licensePath": "C:/layman/license.lic",
	"privateKeysStorePath": "C:/layman/privateKeys.keystore",
	"issuedTime": "2023-04-18 00:00:00",
	"expiryTime": "2023-04-24 10:20:00",
	"consumerType": "User",
	"consumerAmount": 1,
	"description": "这是证书描述信息",
	"licenseCheckModel": {
		"ipAddress": [ "192.168.3.57","192.168.101.1"],
		"macAddress": ["00-50-56-C0-00-08", "E0-E1-A9-9D-35-C8"],
		"cpuSerial": "BFEBFBFF000906EA",
		"mainBoardSerial": "/5H6MJ23/CNWS2009BK01DR/"
	}
}

如果请求成功,那么最后会在 licensePath 参数设置的路径生成一个 license.lic 的文件,这个文件就是给客户部署代码的服务器许可文件。

3、校验license:

ClientDemo服务中license-config.properties参数配置如下:

#License相关配置
license.subject=layman_license   #主体 - 注意主体要与生成证书的主体一致一致,不然验证通过不了
license.publicAlias=publicCert   #公钥别称
license.storePass=public_password1234   #访问公钥的密码
license.licensePathWin=C:/layman/license.lic   #license位置
license.publicKeysStorePathWin=C:/layman/publicCerts.keystore   #公钥位置
license.licensePathLinux=/layman/license.lic
license.publicKeysStorePathLinux=/layman/publicCerts.keystore

启动ClientDemo服务,访问 http://127.0.0.1:7080/login。
如果证书失效,这会出现以下报错。

到此这篇关于Spring Boot项目中使用 TrueLicense 生成和验证License的文章就介绍到这了,更多相关Spring Boot使用 TrueLicense 生成和验证License内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Security OAuth2 实现登录互踢的示例代码

    Spring Security OAuth2 实现登录互踢的示例代码

    这篇文章主要介绍了Spring Security OAuth2实现登录互踢的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 使用ScheduledThreadPoolExecutor踩过最痛的坑

    使用ScheduledThreadPoolExecutor踩过最痛的坑

    这篇文章主要介绍了使用ScheduledThreadPoolExecutor踩过最痛的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • kotlin之协程的理解与使用详解

    kotlin之协程的理解与使用详解

    这篇文章主要介绍了kotlin之协程的理解与使用详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • SpringMVC请求流程源码解析

    SpringMVC请求流程源码解析

    这篇文章主要介绍了SpringMVC请求流程源码分析,包括springmvc使用,SpringMVC启动过程及SpringMVC请求过程,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Java SpringBoot 中的操作事务

    Java SpringBoot 中的操作事务

    这篇文章主要介绍了Java SpringBoot 中的操作事务,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 一文搞懂设计模式中的单例模式

    一文搞懂设计模式中的单例模式

    这篇文章主要介绍了一文搞懂设计模式中的单例模式,单例模式是最简单的设计模式之一,属于创建型模式,它提供了一种创建对象的方式,确保只有单个对象被创建,需要的朋友可以参考下
    2023-08-08
  • java时区转换的理解及示例详解

    java时区转换的理解及示例详解

    这篇文章主要介绍了java时区转换的理解及示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Spring Boot 使用 Hutool-jwt 实现 token 验证功能

    Spring Boot 使用 Hutool-jwt 实现 token 验证功能

    JWT 就是一种网络身份认证和信息交换格式,这篇文章主要介绍了Spring Boot使用Hutool-jwt实现token验证,需要的朋友可以参考下
    2023-07-07
  • maven deploy时报错的解决方法

    maven deploy时报错的解决方法

    这篇文章主要介绍了maven deploy时报错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java解码H264格式视频流中的图片

    Java解码H264格式视频流中的图片

    这篇文章主要为大家详细介绍了Java解码H264格式视频流中的图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论