TrueLicense简介

简介: 原文 TrueLicense是一个开源的证书管理引擎,官网 使用场景:当项目交付给客户之后用签名来保证客户不能随意使用项目 默认校验了开始结束时间,可扩展增加mac地址校验等。 其中还有ftp的校验没有尝试,本文详细介绍的是本地校验 license授权机制的原理: 生成密钥对,方法有很多。

原文
TrueLicense是一个开源的证书管理引擎,官网
使用场景:当项目交付给客户之后用签名来保证客户不能随意使用项目
默认校验了开始结束时间,可扩展增加mac地址校验等。
其中还有ftp的校验没有尝试,本文详细介绍的是本地校验

license授权机制的原理:

  1. 生成密钥对,方法有很多。
  2. 授权者保留私钥,使用私钥对包含授权信息(如使用截止日期,MAC地址等)的license进行数字签名。
  3. 公钥给使用者(放在验证的代码中使用),用于验证license是否符合使用条件。

使用keytool生成密钥对

以下命令在dos命令行执行,注意当前执行目录,最后生成的密钥对即在该目录下:

  1. 首先要用KeyTool工具来生成私匙库:(-alias别名 –validity 3650表示10年有效)
    keytool -genkey -alias privatekey -keystore privateKeys.store -validity 3650
  2. 然后把私匙库内的公匙导出到一个文件当中:
    keytool -export -alias privatekey -file certfile.cer -keystore privateKeys.store
  3. 然后再把这个证书文件导入到公匙库:
    keytool -import -alias publiccert -file certfile.cer -keystore publicCerts.store
    最后生成文件privateKeys.store、publicCerts.store拷贝出来备用。

使用LicenseCreate来生成需要的数字签名

配置文件说明:
PRIVATEALIAS:对应生成的私匙库名称别名alias privatekey
KEYPWD:该密码生成密钥对的密码,生成密钥对时录入的密码
STOREPWD:该密码是在使用keytool生成密钥对时设置的密钥库的访问密码
SUBJECT:生成的签名主题
licPath:生成的签名文件存放路径
priPath:使用的私匙库文件路径
剩下的为签名文件中的内容配置
其中consumerType和ConsumerAmount不明确如何使用

扩展签名文件中的自定义字段

   //在CreateLicense#createLicenseContent方法中
   // Extra中可以存储扩展的字段,校验时读取该信息即可
   content.setExtra(new Object()); 

使用LicenseVerify来验证签名

配置文件说明:
PUBLICALIAS:对应生成的公匙库别名alias publiccert
STOREPWD:该密码生成密钥对的密码,生成密钥对时录入的密码
SUBJECT:校验的签名主题
licPath:校验的签名文件存放路径
pubPath:使用的公匙库文件路径

扩展字段校验
修改cn.melina.license.VerifyLicense中verify方法

    public boolean verify() {
        /************** 证书使用者端执行 ******************/
        boolean result = true;
        LicenseManager licenseManager = LicenseManagerHolder
                .getLicenseManager(initLicenseParams());
        // 安装证书
        try {
            licenseManager.install(new File(licPath));
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        // 验证证书
        try {
            //使用LicenseContent来接收默认校验的返回值,返回值为签名内容,进行二次校验
            LicenseContent licenseContent = licenseManager.verify();
            //扩展验证,非扩展验证可从licenseContent中获取
            Map<String,String> content = (Map<String, String>) licenseContent.getExtra();
            String targetMac = content.get("mac");
            //此处用于存储最大用户数
            String maxUserCount = content.get("maxUserCount");
            result = validateMacAddress(targetMac);
        } catch (Exception e) {
            e.printStackTrace();
            result = false;
        }
        return result;
    }


 

来自为知笔记(Wiz)


     

     

     

    本文转载自:http://blog.csdn.net/luckymelina/article/details/22870665

    目录
    相关文章
    |
    6月前
    |
    Unix 编译器 C语言
    c++简介
    c++简介
    54 0
    |
    6月前
    |
    算法 程序员 编译器
    【C/C++】C/C++编程——C/C++简介
    【C/C++】C/C++编程——C/C++简介
    50 0
    |
    XML 监控 Devops
    CUNIT简介
    CUNIT简介
    468 0
    CUNIT简介
    |
    存储 编解码
    H264简介
    H.264 原始码流(又称为裸流),是有一个接一个的 NALU 组成的,而它的功能分为两层:视频编码层(VCL, Video Coding Layer)和网络提取层(NAL, Network Abstraction Layer),其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。
    H264简介
    |
    API C++
    exosip 和 pjsip 简介
    oSIP  oSIP的开发开始于2000年7月,第一个版本在2001年5月发 布,到现在已经发展到3.x了。它采用ANSI C编写,而且结 构简单小巧,所以速度特别快,它并不提供高层的SIP会话 控制API,它主要提供一些解析SIP/SDP消息的API和事务处理 的状态机,oSIP的作者还开发了基于oSIP的UA lib:exosip和 proxy server lib:partysip.
    3974 0
    |
    Java 测试技术 开发工具
    AssertJ简介
    JUnit和Hamcrest 学Java的一定知道JUnit吧,它是一个著名的Java单元测试框架。我们在使用JUnit测试的时候,一般情况下会使用它的Assert类下的各种assertXXX方法。
    1632 0
    |
    安全 算法 网络安全
    虚拟专用网简介
    本文重点讲解虚拟专用网的理论知识,后续文章对具体虚拟专用网进行讲解(包括原理和配置),欢迎持续关注和订阅专栏。
    1052 0
    |
    XML 分布式计算 算法
    Rosetta | Rosetta简介
    Rosetta | Rosetta简介
    919 0
    Rosetta | Rosetta简介
    |
    JavaScript 前端开发 C++
    cheerp 简介
    这个文章主要介绍了为什么要用cheerp技术以及和其他对标的技术对比,他的闪光点在哪里。 WebAssembly 是一种中间码用于加速浏览器端应用,目前有多种语言可以编译或者交叉到这种格式。当然这个不是本文的内容,详细了解请移步 wasm官网 目前支持: cc++是官方推荐的方式,详细使用见文档;其他语言 AssemblyScript:语法和 TypeScript 一致,对前端来说学习成本低,为前端编写 WebAssembly 最佳选择; Rust:语法复杂、学习成本高,对前端来说可能会不适应。
    2705 0
    |
    缓存 Shell 开发工具
    antigen简介
    在Linux下经常需要进行终端操作,一个好的shell解释器可以帮助我们极大提高工作效率。有些同学可能听说过zshell和oh-my-zsh,前者是一个shell程序,由于功能比较强大,所以叫做z shell,意为终极shell;而后者是一个模板化的zshell配置脚本,通过它我们可以快速配置一个好用的zsh。
    1582 0