springboot实现License证书的授权和许可到期验证

您所在的位置:网站首页 mac会不会过期 springboot实现License证书的授权和许可到期验证

springboot实现License证书的授权和许可到期验证

2023-12-20 19:30| 来源: 网络整理| 查看: 265

前言

在客户服务器部署软件项目后,为了项目版权管控或者对项目进行授权收费处理的,就需要实现项目的授权和许可验证。

在这里讲解的是使用 license证书 的形式实现授权和许可验证(已通过测试)。 主要是通过 IP地址、MAC地址、CPU序列号、主板序列号 服务器硬件信息生成一个License证书,同时可以设置生效时间与失效时间,控制项目到期之后项目不可用。

实现思路

license授权机制的原理

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

实现流程

1、使用JDK自带的 keytool 生成密钥对(生成私钥和公钥两个文件) 2、License服务端获取服务器硬件信息 3、License服务器根据服务器硬件信息和私钥文件加密生成 License.lic 文件,也就是License证书。 4、License客户端安装License证书并生效和到期日期进行校验 实现步骤 一、使用KeyTool生成密匙对

1、自己本地随便找个位置创建一个文件夹,我这里创建了名为 License 的文件夹 在这里插入图片描述 2、进入到该文件中,在上面的路径中输入cmd并回车,会打开命令窗口 在这里插入图片描述 3、在命令窗口中依次输入以下命令

keytool -genkey -keysize 1024 -keyalg DSA -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "ljh521548" -keypass "ljh521548" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" # 导出命令 keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "ljh521548" -file "certfile.cer" #导入命令 keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "ljh521548"

命令参数说明:

keysize 密钥长度 keyalg 加密方式 validity 私钥的有效期(单位:天) alias 私钥别称 keystore 指定私钥库文件的名称 (生成在当前目录) storepass 指定私钥库的密码 (keystore 文件存储密码) keypass 指定别名条目的密码 (私钥加解密密码) dname 证书个人信息 CN 为你的姓名 OU 为你的组织单位名称 O 为你的组织名称 L 为你所在的城市名称 ST 为你所在的省份名称 C 为你的国家名称

在这里插入图片描述 然后可以看到以下三个文件:

privateKeys.keystore(私钥)提供给生成证书使用(自己保留)

publicCerts. keystore(公钥)提供给证书认证使用(给客户使用)

certfile.cer后续步骤用不到,可以删除。

其他可能使用到的命令

# 删除 keytool -delete -alias privateKey -keystore "privateKeys.keystore" -storepass "ljh521548" # 查看 keytool -list -v -keystore zuiyuPrivateKeys.keystore -storepass "ljh521548" 二、License服务端获取服务器信息和生成License证书

源码:https://gitee.com/sshmily/license-service

1、启动后通过 /api/license/getServerInfos/{osName} 接口获取到服务器的硬件地址。 如果是windows系统osName参数就输入windows,Linux系统osName参数就输入Linux。 在这里插入图片描述 2、使用服务器的硬件信息和第一步生成的私钥生成License证书

使用 /api/license/generateLicense 接口生成证书。 在这里插入图片描述 请求参数示例

{ "subject": "license_ljh", //主题名 "privateAlias": "privateKey", //私钥别名 "keyPass": "ljh521548", //私钥密码 "storePass": "ljh521548", //密钥库密码 "licensePath": "D:/License/license.lic", //生成证书的存储位置 "privateKeysStorePath": "D:/License/privateKeys.keystore", //私钥的存储位置 "issuedTime": "2022-12-09 00:00:00", //开始生效时间 "expiryTime": "2099-12-09 00:00:00", //证书到期时间 "consumerType": "user", //用户类型 "consumerAmount": 1, //用户数量 "description": "这是证书描述信息", //描述信息 "licenseCheckModel": { //licenseCheckModel 第一步获取到的服务器硬件信息 "ipAddress": [ "" ], "macAddress": [ "" ], "cpuSerial": "", "mainBoardSerial": "" } } 三、客户端安装证书并校验时间

源码:https://gitee.com/sshmily/license-client

源码拿到本地后主要是修改yml文件配置即可,其他的代码都有说明

license: subject: license_ljh #主题名 publicAlias: publicCert #公钥别名 storePass: ljh21548 #密钥库密码 licensePath: D:/License/license.lic #license证书存放位置 publicKeysStorePath: D:/License/publicCerts.keystore #公钥文件存放位置 uploadPath: D:/LicenseDemo/ 测试 1、证书过期

当证书过期的时候启动客户端控制台会提示 exc.licenseHasExpired 错误,说明证书已经过期的。 在这里插入图片描述 这个时候访问项目就会出现以下提示 在这里插入图片描述 在这里插入图片描述

2、证书有效

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3