searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Java实现License许可证授权

2023-06-15 07:09:33
344
0

一、 License许可证创建

通过Java的密钥和证书管理工具keytool 生成私钥PrivateKeys.keystore、证书certfile.cer、公钥PublicCerts.store,再通过程序读取私钥生成许可证license.lic,程序读取许可证进行验证来实现软件授权。

1. 私钥、证书、公钥生成

需切换到JDK的JDK\jre\bin目录下执行。

1.1    生成私钥PrivateKeys.keystore

设置privateKeys(别名)生成路径, 设置keypass、storepass密码,-dname指定证书拥有者信息 例如:"CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"

1.   keytool -genkey -alias privateKeys -keypass xxxxxx -keyalg DSA -keysize 1024 -validity 365 -keystore D://PrivateKeys.keystore -storepass xxxxxx -dname "CN=xxxxxx , OU=xxxxxx , O=xxxxxx , L=HD, S=BJ, C=zh"  

1.2    生成证书certfile.cer

设置certfile.cer、PrivateKeys.keystore存储路径,导出privateKeys

1.   keytool -export -alias privateKeys -file D://certfile.cer -keystore D://PrivateKeys.keystore  

1.3    生成公钥PublicCerts.store

1.   keytool -import -alias publiccert -file D://certfile.cer -keystore D://PublicCerts.store  

2. 许可证生成

2.1    配置文件说明setparam.properties

1.   ##########common parameters###########  

2.   #alias privateKeys (私钥的别名)  

3.   PRIVATEALIAS=privateKeys  

4.   #key(important!)(该密码生成密钥对的密码,需要妥善保管,不能让使用者知道)  

5.   KEYPWD=xxxxxx  

6.   #STOREPWD(该密码是在使用keytool生成密钥对时设置的密钥库的访问密码)  

7.   STOREPWD=xxxxxx  

8.   #SUBJECT(项目的唯一识别码)  

9.   SUBJECT=xxxxxx

10.  #licPath(生成证书的地址)  

11.  licPath=D://license.lic  

12.  #priPath(私钥密钥库的地址)  

13.  priPath=PrivateKeys.keystore  

14.  ##########license content###########  

15.  #issuedTime(发布日期)  

16.  issuedTime=2019-09-11  

17.  #notBeforeTime(有效开始日期)  

18.  notBefore=2019-09-11  

19.  #notAfterTime(有效截止日期)  

20.  notAfter=2019-09-12  

21.  #ip address  

22.  ipAddress=192.168.1.111  

23.  #mac address(机器物理地址MAC地址,“-”隔开)  

24.  macAddress=AA-BB-CC-DD-EE-FF  

25.  #consumerType  

26.  consumerType=User  

27.  #ConsumerAmount  

28.  consumerAmount=1  

29.  #info  

30.  info=this is a license  

2.2    生成许可证license.lic

执行licenseCreate-1.0.jar,生成license.lic

执行命令

1.   java -jar licenseCreate-1.0.jar  

执行结果如下成功

1.   读取资源文件路径为:外部 的 setparam.properties  

2.   读取资源文件路径为:外部 的 PrivateKeys.keystore  

3.   操作系统为:windows 10  

4.   CPUID:XXXXXXXXXXXXXXXX  

5.   create license file successfully  

许可证保存在setparam.properties配置的licPath路径下license.lic文件

二、 License许可证验证

1. 配置文件说明verifyparam.properties

1.   ##########common parameters###########  

2.   #alias  

3.   PUBLICALIAS=publiccert  

4.   #STOREPWD  

5.   STOREPWD=xxxxxx  

6.   #SUBJECT  

7.   SUBJECT=xxxxxx

8.   #licPath(验证证书的地址)  

9.   licPath=D:/license.lic  

10.  #pubPath(公钥密钥库的地址)  

11.  pubPath=PublicCerts.store  

2. 验证许可证license.lic

执行licenseVerify-1.0.jar,验证license.lic

执行命令

1.   java -jar licenseVerify-1.0.jar  

执行结果成功如下:

1.   propertiesPath=verifyparam.properties  

2.   读取资源文件路径为:外部 的 verifyparam.properties  

3.   读取资源文件路径为:外部 的 D:/license.lic  

4.   读取资源文件路径为:外部 的 D:/PublicCerts.store  

5.   Instal path:D:/license.lic  

6.   mac=AA-BB-CC-DD-EE-FF  

7.   操作系统为:windows 10  

8.   CPUID:XXXXXXXXXXXXXXXX  

9.   License file instal successfully!  

10.  mac=AA-BB-CC-DD-EE-FF  

11.  操作系统为:windows 10  

12.  CPUID:XXXXXXXXXXXXXXXX  

13.  License file verify successfully!  

14.  证书有效  

执行结果失败如下:

1.   propertiesPath=verifyparam.properties  

2.   读取资源文件路径为:外部 的 verifyparam.properties  

3.   读取资源文件路径为:外部 的 D:/license.lic  

4.   读取资源文件路径为:外部 的 D:/PublicCerts.store  

5.   Instal path:D:/license.lic  

6.   License file instal failure  

7.   证书无效  

三、 程序中使用license验证

  1. 授权,通过执行licenseCreate-1.0.jar在授权机器上生成许可证lic,再通过执行licenseVerify-1.0.jar验证生成的license.lic,验证通过,机器授权成功。
  2. 授权成功此lic可用,程序可以使用该文件进行授权。

1. 程序具体引用授权如下:

  1. 引用licenseVerify-1.0.jar
  2. 配置文件properties,公钥PublicCerts.store放入到程序中
  3. 通过程序代码调用验证,true验证成功,false验证失败。

代码如下:

1.        /** 

2.        * 许可证验证 

3.        *  

4.        * @author zhangkx 

5.        * @version 2019-9-2 11:08:51 

6.        * @return true验证成功 

7.        */  

8.       public static boolean licenseVerify() {  

9.           RequestVerifyLicense vLicense = new RequestVerifyLicense();  

10.          boolean licenseVerifyStatus = false;  

11.          try {   

12.              vLicense.setParam("verifyparam.properties");  

13.  //          vLicense.setParam("src/main/resourceserifyparam.properties");  

14.              licenseVerifyStatus = vLicense.verify();  

15.              if (licenseVerifyStatus) {  

16.                  System.out.println("证书有效");  

17.              } else {  

18.                  System.out.println("证书无效");  

19.              }  

20.          } catch (Exception er) {  

21.              System.out.println(er.getMessage());  

22.          }  

23.          return licenseVerifyStatus;  

24.      }  

 

0条评论
0 / 1000
张****祥
4文章数
0粉丝数
张****祥
4 文章 | 0 粉丝
张****祥
4文章数
0粉丝数
张****祥
4 文章 | 0 粉丝
原创

Java实现License许可证授权

2023-06-15 07:09:33
344
0

一、 License许可证创建

通过Java的密钥和证书管理工具keytool 生成私钥PrivateKeys.keystore、证书certfile.cer、公钥PublicCerts.store,再通过程序读取私钥生成许可证license.lic,程序读取许可证进行验证来实现软件授权。

1. 私钥、证书、公钥生成

需切换到JDK的JDK\jre\bin目录下执行。

1.1    生成私钥PrivateKeys.keystore

设置privateKeys(别名)生成路径, 设置keypass、storepass密码,-dname指定证书拥有者信息 例如:"CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"

1.   keytool -genkey -alias privateKeys -keypass xxxxxx -keyalg DSA -keysize 1024 -validity 365 -keystore D://PrivateKeys.keystore -storepass xxxxxx -dname "CN=xxxxxx , OU=xxxxxx , O=xxxxxx , L=HD, S=BJ, C=zh"  

1.2    生成证书certfile.cer

设置certfile.cer、PrivateKeys.keystore存储路径,导出privateKeys

1.   keytool -export -alias privateKeys -file D://certfile.cer -keystore D://PrivateKeys.keystore  

1.3    生成公钥PublicCerts.store

1.   keytool -import -alias publiccert -file D://certfile.cer -keystore D://PublicCerts.store  

2. 许可证生成

2.1    配置文件说明setparam.properties

1.   ##########common parameters###########  

2.   #alias privateKeys (私钥的别名)  

3.   PRIVATEALIAS=privateKeys  

4.   #key(important!)(该密码生成密钥对的密码,需要妥善保管,不能让使用者知道)  

5.   KEYPWD=xxxxxx  

6.   #STOREPWD(该密码是在使用keytool生成密钥对时设置的密钥库的访问密码)  

7.   STOREPWD=xxxxxx  

8.   #SUBJECT(项目的唯一识别码)  

9.   SUBJECT=xxxxxx

10.  #licPath(生成证书的地址)  

11.  licPath=D://license.lic  

12.  #priPath(私钥密钥库的地址)  

13.  priPath=PrivateKeys.keystore  

14.  ##########license content###########  

15.  #issuedTime(发布日期)  

16.  issuedTime=2019-09-11  

17.  #notBeforeTime(有效开始日期)  

18.  notBefore=2019-09-11  

19.  #notAfterTime(有效截止日期)  

20.  notAfter=2019-09-12  

21.  #ip address  

22.  ipAddress=192.168.1.111  

23.  #mac address(机器物理地址MAC地址,“-”隔开)  

24.  macAddress=AA-BB-CC-DD-EE-FF  

25.  #consumerType  

26.  consumerType=User  

27.  #ConsumerAmount  

28.  consumerAmount=1  

29.  #info  

30.  info=this is a license  

2.2    生成许可证license.lic

执行licenseCreate-1.0.jar,生成license.lic

执行命令

1.   java -jar licenseCreate-1.0.jar  

执行结果如下成功

1.   读取资源文件路径为:外部 的 setparam.properties  

2.   读取资源文件路径为:外部 的 PrivateKeys.keystore  

3.   操作系统为:windows 10  

4.   CPUID:XXXXXXXXXXXXXXXX  

5.   create license file successfully  

许可证保存在setparam.properties配置的licPath路径下license.lic文件

二、 License许可证验证

1. 配置文件说明verifyparam.properties

1.   ##########common parameters###########  

2.   #alias  

3.   PUBLICALIAS=publiccert  

4.   #STOREPWD  

5.   STOREPWD=xxxxxx  

6.   #SUBJECT  

7.   SUBJECT=xxxxxx

8.   #licPath(验证证书的地址)  

9.   licPath=D:/license.lic  

10.  #pubPath(公钥密钥库的地址)  

11.  pubPath=PublicCerts.store  

2. 验证许可证license.lic

执行licenseVerify-1.0.jar,验证license.lic

执行命令

1.   java -jar licenseVerify-1.0.jar  

执行结果成功如下:

1.   propertiesPath=verifyparam.properties  

2.   读取资源文件路径为:外部 的 verifyparam.properties  

3.   读取资源文件路径为:外部 的 D:/license.lic  

4.   读取资源文件路径为:外部 的 D:/PublicCerts.store  

5.   Instal path:D:/license.lic  

6.   mac=AA-BB-CC-DD-EE-FF  

7.   操作系统为:windows 10  

8.   CPUID:XXXXXXXXXXXXXXXX  

9.   License file instal successfully!  

10.  mac=AA-BB-CC-DD-EE-FF  

11.  操作系统为:windows 10  

12.  CPUID:XXXXXXXXXXXXXXXX  

13.  License file verify successfully!  

14.  证书有效  

执行结果失败如下:

1.   propertiesPath=verifyparam.properties  

2.   读取资源文件路径为:外部 的 verifyparam.properties  

3.   读取资源文件路径为:外部 的 D:/license.lic  

4.   读取资源文件路径为:外部 的 D:/PublicCerts.store  

5.   Instal path:D:/license.lic  

6.   License file instal failure  

7.   证书无效  

三、 程序中使用license验证

  1. 授权,通过执行licenseCreate-1.0.jar在授权机器上生成许可证lic,再通过执行licenseVerify-1.0.jar验证生成的license.lic,验证通过,机器授权成功。
  2. 授权成功此lic可用,程序可以使用该文件进行授权。

1. 程序具体引用授权如下:

  1. 引用licenseVerify-1.0.jar
  2. 配置文件properties,公钥PublicCerts.store放入到程序中
  3. 通过程序代码调用验证,true验证成功,false验证失败。

代码如下:

1.        /** 

2.        * 许可证验证 

3.        *  

4.        * @author zhangkx 

5.        * @version 2019-9-2 11:08:51 

6.        * @return true验证成功 

7.        */  

8.       public static boolean licenseVerify() {  

9.           RequestVerifyLicense vLicense = new RequestVerifyLicense();  

10.          boolean licenseVerifyStatus = false;  

11.          try {   

12.              vLicense.setParam("verifyparam.properties");  

13.  //          vLicense.setParam("src/main/resourceserifyparam.properties");  

14.              licenseVerifyStatus = vLicense.verify();  

15.              if (licenseVerifyStatus) {  

16.                  System.out.println("证书有效");  

17.              } else {  

18.                  System.out.println("证书无效");  

19.              }  

20.          } catch (Exception er) {  

21.              System.out.println(er.getMessage());  

22.          }  

23.          return licenseVerifyStatus;  

24.      }  

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0