# license-easy **Repository Path**: git.oschina.gaofei/license-easy ## Basic Information - **Project Name**: license-easy - **Description**: license生成及管理服务,包含前后端代码,开箱即用,简单易上手 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/zy-explorej2ee - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2022-10-27 - **Last Updated**: 2022-10-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 项目名称:zy-license ### 项目端口:8888 ### 项目描述: 证书服务,用于给Java应用生成证书 ### 快速开始 #### 1.启动后端 1.导入项目,运行zy-license-provider项目下的 zy_license.sql (也可以直接复制到Navicat执行) 2.根据实际情况修改zy-license-provider项目下application.properties配置文件中的相关配置项 3.定位到zy-license-provider项目下的ZyLicenseApplication.java类直接运行main方法启动 若本地启动不使用nacos,则只需注释掉pom中的 nacos-config 和 nacos-discovery 即可 4.访问http://localhost:8888/api/doc.html访问swagger接口文档 ![img.png](docs/images/img01.png) #### 2.启动前端 1.前端使用的vue.js,请先确保node.js环境OK,npm命令正常 2.切换到zy-license-front目录下 3.运行:npm i 4.依赖安装成功后再运行:npm run dev 5.访问:http://localhost:8881/ ![img.png](docs/images/img02.png) ### 项目截图 ![img.png](docs/images/img03.png) ![img.png](docs/images/img04.png) ![img.png](docs/images/img05.png) ![img.png](docs/images/img06.png) ![img.png](docs/images/img07.png) ![img.png](docs/images/img08.png) ### 后端项目结构示例: 详见根目录下的 zy-license(项目结构示例).mmd 图示。如若无法查看,请在IDEA中安装IDEA Mind Map插件查看。 ### 规范:[https://gitee.com/zy-explorej2ee/standard](https://gitee.com/zy-explorej2ee/standard) ## 详细说明: ### 1.使用JDK自带的 keytool 工具生成公私钥证书库: 公钥相关信息随应用部署至客户端服务器(这里做一定的简化,客户端服务器只需要配置证书路径),私钥信息用来生成license,私钥信息不可泄露。 假如我们设置(与application.properties配置文件对应项保持一致即可,在D:/license目录下生成): 公钥别名: publicCert 公钥库密码: public_password1234 私钥别名: privateKey 私钥库密码: 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用于当前的项目给客户生 成license文件,而文件publicCerts.keystore则随应用代码部署到客户服务器,用户解密license文件并校验其许 可信息。 ``` 见下图: ![img.png](docs/images/img09.png) ### 2.调用服务的接口获取服务器信息 ``` GET接口:http://localhost:8888/api/license/getServerInfos 具体可以查看服务的swagger文档接口:http://localhost:8888/api/doc.html ``` 获得如下服务器信息 ![img.png](docs/images/img10.png) ### 3.调用服务的接口生成license文件 ``` POST接口:http://localhost:8888/api/license/generateLicense 注意请求该接口时,请求头必须加上:Content-Type:application/json;charset=UTF-8,参数详见文档说明 具体可以查看服务的swagger文档接口:http://localhost:8888/api/doc.html ``` 后端接口生成: ![img.png](docs/images/img11.png) ![img.png](docs/images/img12.png) ![img.png](docs/images/img13.png) 前端页面生成: ![img.png](docs/images/img14.png) ![img.png](docs/images/img15.png) ![img.png](docs/images/img16.png) ### 4.将生成的license.lic和publicCerts.keystore拷贝到目标服务器的相应目录 如此处拷贝前端生成的证书至windows服务器的 C:\Users\Administrator\Desktop\license_demo 目录下 ![img.png](docs/images/img17.png) ### 5.在客户端应用application.properties中增加以下配置(这里以springboot项目为例) ``` # 证书相关文件放置的路径 license.licensePath=C:/Users/Administrator/Desktop/license_demo ``` 在pom.xml中增加依赖: ``` com.zy zy-license-feign 1.0.0 ``` ![img.png](docs/images/img18.png) ### 6.启动客户端应用验证 证书有效: ![img.png](docs/images/img19.png) 再生成一个快过期的证书再验证,替换原证书(替换license.lic即可) ![img.png](docs/images/img20.png) ![img.png](docs/images/img21.png) ![img.png](docs/images/img22.png) ### 7.鸣谢 感谢大牛https://gitee.com/zifangsky/LicenseDemo 的项目参考,我在其基础上做了一定的改造,使之更为好用。如有帮助,烦请star!