Springboot集成License

前言

软件许可(License)证书可以在软件产品交付的时候,对其使用时间以及使用范围进行授权。当用户申请(购买)改变使用时间和使用范围的时候,授权方可以为用户生成一个新的license替换原来的license即可,从而避免了修改源码、改动部署等繁琐操作。

公钥、私钥和证书介绍

在互联网通信中,为了保证信息传输的安全,通常使用对称秘钥、非对称秘钥以及密码散列函数的方式对通信信息进行加密以及通信身份进行验证。对称秘钥即通信双方使用相同的秘钥对通信内容进行加密,这种方式应该是比较老旧的通信加密方式,通信安全程度较低。现在使用的较多的应该是非对称加密,每个人有自己的私钥,然后拥有授权的公钥。每人可以利用自己的私钥对要发送的信息进行加密,然后接受者通过发送者的公钥对信息进行解密。可以类比信箱,拥有公钥的人,可以向 信箱投送信件,拥有私钥的人可以打开信箱,读取信件。

在这种通信方式中,可能存在C偷偷将B持有的A公钥换成自己的公钥,而B不知道自己拥有的A的公钥已经被替换,那么C就可以冒充A给B发送信息,而B相信此信息来自A。为了解决这个问题,需要对B持有的A的公钥进行认证,从而确定此公钥确实是A的公钥,而不是被别人篡改过的。而认证机构必须是第三方可信赖的机构,就是CA,由此发送过程就变成如下:

  • A发给B数据的时候,除了要发送签名和数据实体,还要发送CA颁发的证书。

  • B接收到A发送过来的数据后,首先用CA的公钥区解密证书,如果能解,表明这个证书里的信息可信赖,从而得到证书里A的公钥,然后B再用到后的公钥去做下一步动作。

核心工具包

使用的核心工具包是:truelicense-core,TrueLicense是一个开源的证书管理引擎,可以用于license的生成和有效性的验证。在Truelicense中,license将和公钥一起发送给被授权者,在程序中,使用公钥对license进行解密,并校验其许可信息。

<!-- https://mvnrepository.com/artifact/de.schlichtherle.truelicense/truelicense-core -->
<dependency>
    <groupId>de.schlichtherle.truelicense</groupId>
    <artifactId>truelicense-core</artifactId>
    <version>1.33</version>
</dependency>

使用Java自带的Keytool生成公私钥库

Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据:

  • 密钥条目(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)

  • 可信任的证书实体(trusted certificate entries)——只包含公钥

生成license命令

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值