License授权方案「建议收藏」

License授权方案「建议收藏」源码地址:https://github.com/sixj0/license解决的问题:将项目卖给其他公司,需要将jar包在客户的服务器上部署,为了避免客户将项目jar包进行二次售卖,或者…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

源码地址: https://github.com/sixj0/license

解决的问题:

将项目卖给其他公司,需要将jar包在客户的服务器上部署,为了避免客户将项目jar包进行二次售卖,或者我们需要控制项目的使用期限,比如控制项目只能运行一年,这个是时候,需要使用License认证,生成一个License证书,该证书中包含客户服务器信息(IP地址、MAC地址、CPU序列号、主板序列号),同时可以设置生效时间与失效时间,控制项目到期之后项目不可用。

license授权机制的原理

(1)生成密钥对,包含私钥和公钥。

(2)授权者保留私钥,使用私钥对授权信息诸如使用截止日期,mac 地址等内容生成 license 签名证书。

(3)公钥给使用者,放在代码中使用,用于验证 license 签名证书是否符合使用条件。

使用KeyTool生成密匙库:

  1. 生成私钥库

    keytool -genkeypair -keysize 1024 -validity 3650 -alias SYSHLANG -keystore privateKeys.keystore -storepass 12345678A -keypass 12345678A -dname "CN=sixj, OU=runlion, O=redlion, L=HZ, ST=ZJ, C=CN"
    

参数说明:

  • keysize 密钥长度

  • validity 私钥的有效期(单位:天)

  • alias 私钥别称

  • keystore 指定私钥库文件的名称 (生成在当前目录)

  • storepass 指定私钥库的密码 (keystore 文件存储密码)

  • keypass 指定别名条目的密码 (私钥加解密密码)

  • dname 证书个人信息

  • CN 为你的姓名

  • OU 为你的组织单位名称

  • O 为你的组织名称

  • L 为你所在的城市名称

  • ST 为你所在的省份名称

  • C 为你的国家名称

  1. 生成证书文件

    keytool -exportcert -alias SYSHLANG -keystore privateKeys.keystore -storepass 12345678A -file certfile.cer
    

参数说明:

  • alias 私钥别称

  • keystore 指定私钥库文件的名称 (如果没有带路径,在当前目录查找)

  • storepass 指定私钥库的密码

  • file 导出证书文件名称

  1. 生成公钥库

    keytool -import -alias SYSHLANG -file certfile.cer -keystore publicCerts.keystore  -storepass 12345678A
    

参数说明:

  • alias 公钥别称

  • file 证书文件名称

  • keystore 公钥文件名称

  • storepass 指定私钥库的密码

看到以下三个文件:

  • privateKeys.keystore(私钥)提供给生成证书使用

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

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

License证书:

根据客户服务器硬件信息(MAC地址、IP地址、CPU序列号、主板序列号)生成授权证书,同时可以给授权证书设置生效时间与失效时间。

整个授权过程分为三步:

  1. 获取客户端服务器信息(license-server-info服务)

将license-server-info服务部署到客户服务器上

请求接口/license/getServerInfo

得到硬件信息:

{
 "ipAddress": [ //授权的ip列表
     "172.17.0.8"
 ],
 "macAddress": [ //授权的mac地址列表
     "52-54-00-74-0B-D9"
 ],
 "cpuSerial": "55 06 05 00 FF FB 8B 0F", //cpu序列号
 "mainBoardSerial": "afb14aac-eccb-4a37-9c31-e7951ce73e0d"//主板序列号
}
  1. 生成授权证书(license-creator服务)

我们自己部署生成证书的服务(license-creator)

请求接口/license/generateLicense

传入授权信息:

{

 "expiryTime":"2021-05-25 19:07:59", //生效时间
 "issuedTime":"2021-04-25 19:07:00", //失效时间
 "keyPass":"12345678A", //密钥的密码
 "privateAlias":"SYSHLANG",
 "licensePath":"/Users/sixj/Desktop/license/license.lic", //证书生成地址
 "privateKeysStorePath":"/Users/sixj/Desktop/license/privateKeys.keystore",// 密钥文件地址
 "storePass":"12345678A", //密钥库的密码
 "subject":"pushi-kn-graph",
 "licenseCheckModel":{ //授权验证信息
     "cpuSerial":"47A8E193-23D4-5B93-92AB-4A96FBC0346F",//cpu序列号
     "ipAddress":[ //ip
         "192.168.174.107"
     ],
     "macAddress":[ //mac地址
         "F8-FF-C2-6A-3E-73"
     ],
     "mainBoardSerial":"C02C31HZMD6P"//主板序列号
 }
}

 

会生成一个license.lic授权文件到执行目录

  1. 授权验证(license-verify-starter)

需要添加授权功能的服务需要依赖license-verify-starter

配置证书信息

license.subject: pushi-kn-graph
license.publicAlias: SYSHLANG
license.storePass: 12345678A
license.licensePath: /Users/sixj/Desktop/license/license.lic
license.publicKeysStorePath: /Users/sixj/Desktop/license/publicCerts.keystore

 

项目启动的时候,会去验证授权证书的有效性,是否在有效期内,硬件信息是否匹配,如果授权证书无效,项目启动失败。

另外可以在一些核心接口,比如登陆接口,添加@License注解,请求该接口的时候,也会去验证授权证书的有效性,比如验证证书是否到期,如果失效,该接口将会拒绝访问。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164388.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 使用Struts之ActionForm

    使用Struts之ActionForm使用Struts之鸟瞰ActionForm是窗体的对象化表示,它本身其实是个JavaBean,除了标准的getter与setter等方法之外,还提供有reset()、validate()等方法供Struts组件呼叫。当透过发送请求来到ActionServlet后,ActionServlet会从ActionMapping对象中得知所使用的ActionForm对象,这是在struts-con

    2022年10月30日
  • 单片机——SG90舵机工作原理

    单片机——SG90舵机工作原理前言:控制舵机的另一个专业名字叫伺服控制。经过百度,伺服”—词源于希腊语“奴隶”的意思。人们想把“伺服机构”当个得心应手的驯服工具,服从控制信号的要求而动作。在讯号来到之前,转子静止不动;讯号来到之后,转子立即转动;当讯号消失,转子能即时自行停转。由于它的“伺服”性能,因此而得名——伺服系统。我们这次就是要控制舵机转动任意角度。舵机一、外观接线方法:红————————-VCC棕色———————-GND橙色————

  • 什么是pkl文件_桌面显示不出来怎么办是什么问题

    什么是pkl文件_桌面显示不出来怎么办是什么问题对于.pkl文件,我是在接触SMPL模型的时候用到的。SMPL的开源项目包里,有model文件夹,打开有两个.pkl文件。然后,找到了一个说的相对比较详细的网址https://jingyan.baidu.com/article/59a015e36ef251f794886598.html一、个人理解python中有一种存储方式,可以存储为.pkl文件。 该存储方式,可以将python项目过程中用到的一些暂时变量、或者需要提取、暂存的字符串、列表、字典等数据保存起来。 保存方式就是保存到创建的.p

  • 微信小程序–获取已发布微信小游戏和小程序源码「建议收藏」

    最近一直在做微信小游戏的开发,发现了一个好玩的事,在这里记录一下。这段时间一直在做一些小游戏,小程序的开发,但有的时候会发现性能上总是不那么的尽如人意(毕竟我这小菜鸟水平有限),于是就想到,想要看看别的大神们是怎么处理这些问题的(其实就是想看一下大神们的代码怎么写!)。但是,有一个问题就是小游戏或者小程序和H5、网页不一样,不能直接F12看代码,要怎么才能拿他们的代码呢?  …

  • 数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份「建议收藏」

    数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份「建议收藏」结尾日志的问题还原选择中去掉结尾日志就可以了原文地址:http://www.tnblog.net/aojiancc2/article/details/188

  • 大数运算算法汇总_小学减法的运算公式

    大数运算算法汇总_小学减法的运算公式大数加法:#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<string>#include<cmath>#include<stdexce…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号