许可证lisence校验和代码混淆的实现原理

源码

https://gitee.com/pingfanrenbiji/lic-auth

利用jdk keytool工具制作证书

利用jdk keytool工具生成证书

keytool -genkeypair -keysize 1024 -validity 3650 -alias "秘钥别名" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令" -keypass "秘钥口令" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
   
注意:所有口令必须包含字母数字
eg: 
keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "deepglint_store_pwd123" -keypass "deepglint_key_pwd123" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
许可证lisence校验和代码混淆的实现原理

生成了私钥文件 privateKeys.keystore

利用jdk keytool工具导出证书文件

keytool -exportcert -alias "秘钥别名" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令" -file "证书名称.cer"
eg: 
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "deepglint_store_pwd123" -file "certfile.cer"
许可证lisence校验和代码混淆的实现原理

生成证书

利用jdk keytool工具将证书文件导入到证书库中

keytool -import -alias "别名" -file "证书名称.cer" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令"
eg:
keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "deepglint_store_pwd123"
许可证lisence校验和代码混淆的实现原理

将证书文件导入证书库

生成lisence

启动lisence-server服务

许可证lisence校验和代码混淆的实现原理

获取服务器信息

http://127.0.0.1:10000/license/getServerInfos
许可证lisence校验和代码混淆的实现原理

有MAC地址、IP地址、CPU序列号、主板序列号

生成证书

http://127.0.0.1:10000/license/generateLicense
许可证lisence校验和代码混淆的实现原理

安装lisence

配置证书和公钥文件

许可证lisence校验和代码混淆的实现原理

启动服务安装证书

许可证lisence校验和代码混淆的实现原理

安装的过程:读取证书中的服务器信息,然后读取真实的服务器信息,比对是否一致,并且验证是否在有效期内,若一致则安装成功,若不一致,则安装失败。

信息比对的过程在这里

许可证lisence校验和代码混淆的实现原理

lisence校验

证书安装成功之后,访问服务中的接口,浏览器访问http://127.0.0.1:10001//auth/api/1.0/getUserInfo

许可证lisence校验和代码混淆的实现原理

许可证lisence校验和代码混淆的实现原理

在拦截器中添加校验的逻辑,校验的逻辑和证书安装的时候校验过程是一样的。

许可证lisence校验和代码混淆的实现原理

通用的校验类LicenseVerify,其子类CustomLicenseManager中实现自定义的校验逻辑,比如服务器硬件信息校验,比如业务校验: 在线用户数校验

许可证lisence校验和代码混淆的实现原理

父类中封装了共有的校验逻辑,比如有效期校验

许可证lisence校验和代码混淆的实现原理

在拦截器中做校验即校验通过,才可访问其中的服务。

将上面2个服务部署到k8s中

编写server的镜像文件

许可证lisence校验和代码混淆的实现原理

把jar包和密钥证书加载进镜像

生成镜像

docker build -t 127.0.0.1:5000/lic-auth/lic-auth-server:1.0

上传到景象仓库

docker push 127.0.0.1:5000/lic-auth/lic-auth-server:1.0

编写k8s pod文件

许可证lisence校验和代码混淆的实现原理

编写k8s svc文件

许可证lisence校验和代码混淆的实现原理

启动服务

kubectl apply -f .

查看服务启动情况

许可证lisence校验和代码混淆的实现原理

许可证lisence校验和代码混淆的实现原理

查看证书文件

许可证lisence校验和代码混淆的实现原理

查看server服务的端口

许可证lisence校验和代码混淆的实现原理

生成证书

许可证lisence校验和代码混淆的实现原理

许可证lisence校验和代码混淆的实现原理

将生成好的证书复制到宿主机上

kubectl cp lic-auth-server-6dcd66c7d-vq5qb:license.lic -n xibaoxiao-chuangxin ./license.lic

将该证书文件放入待安装的服务中

许可证lisence校验和代码混淆的实现原理

将证书和公钥文件载入镜像

并指定访问路径

许可证lisence校验和代码混淆的实现原理

编译镜像

docker build -t 127.0.0.1:5000/lic-auth/lic-auth-client:1.0 .

pod yaml文件

许可证lisence校验和代码混淆的实现原理

svc yaml文件

许可证lisence校验和代码混淆的实现原理

启动服务

kubectl apply -f
许可证lisence校验和代码混淆的实现原理

证书安装成功

许可证lisence校验和代码混淆的实现原理

查看访问端口

许可证lisence校验和代码混淆的实现原理

http://127.0.0.1:30011//auth/api/1.0/getUserInfo
许可证lisence校验和代码混淆的实现原理

代码混淆

源码

https://gitee.com/roseboy/classfinal.git
生成该插件jar包放入本地仓库或私服中

`待混淆的项目的pom文件中引入该插件包

许可证lisence校验和代码混淆的实现原理

classfinal.version 使用刚刚打包定义的版本号

打包结果之后,就可以看到混淆之后的jar包了

许可证lisence校验和代码混淆的实现原理

反编译之后 就可以看到 代码被混淆了

许可证lisence校验和代码混淆的实现原理

启动jar包

java -javaagent:galaxy-bpm-service.jar='-pwd pingfanrenbiji'  galaxy-bpm-service.jar

当然也可以在镜像中启动,编写镜像文件

许可证lisence校验和代码混淆的实现原理

许可证lisence校验和代码混淆的实现原理

展开阅读全文

页面更新:2024-04-21

标签:代码   别名   口令   逻辑   证书   原理   许可证   名称   过程   服务器   文件   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top