7.13 LimaxKey

LimaxKey简称Lmk,支持证书方式的客户端登录。客户端登录过程使用约定方式签署的私钥证书包。证书内容中包含了签署者信息,可以非常容易地追溯用户来源,事实上Lmk提供了去中心化的第三方登录机制。


  • 7.13.3 签署LmkBundle

    • 运行Lmk签署服务


      java -jar limax.jar pkix lmk [path to lmkserver.xml]
      

      参考lmkserver.xml,进行配置说明


      LmkServer顶层元素

      7个属性:

      certificateAlgorithm:LmkServer自动签署HTTPS服务器证书时使用的公钥算法。

      certificateLifetime:LmkServer自动签署的HTTPS服务器证书以天为单位的寿命。

      constraintNameLength:用户名长度限制。

      domain:LmkServer的HTTPS服务器域名。

      port:HTTPS服务器运行端口,默认443。

      revocationCheckerOptions,trustsPath参见《Key分发系统》服务器运营一节。


      LmkBundle元素

      2个属性:

      certificateLifetime:签署的LmkBundle以天为单位的寿命。

      rsaBits:LmkBundle的RSA私钥长度。


      其它元素的配置与caserver.xml相同,参见《PKIX支持》

      其中CAService的location可以指向LmkCA,也可以指向通用CA,具体的区别在请求LmkBundle时体现。


    • 请求LmkBundle

      使用HTTP/GET方法请求需要客户端认证的HTTPS服务,使用JSON组织查询参数,JSON编码之后再URL编码即可。

      JSON请求样式为:{ "u":"username", "p":"passphrase" }

      其中:

      u为用户名,必须为非空串,长度小于等于Lmk签署服务配置的constraintNameLength,用户名转换为小写签署LmkBundle。

      p为LmkBundle的加密密码。

      Limax框架提供了java实现:


      limax.pkix. LmkRequest.createReqeustor(SSLContextAllocator sslContextAllocator, String host);
      

      初始化一个requestor之后,即可requestor.fetch(“user”); 为后续用户请求LmkBundle了。


    • 更新LmkBundle

      通常情况下使用Switcher,Auany帮助客户端更新LmkBundle即可。

      Limax框架提供了java实现,直接向Lmk签署服务请求更新:


      limax.pkix.LmkBundleUtils.renew(Path path, char[] passphrase);
      

      LmkBundle更新实现流程与请求LmkBundle稍有不同,其中:

      JSON请求样式为:{"p":"passphrase"},只需要提供密码。

      使用LmkBundle自己的证书执行HTTPS客户端认证,如果证书有效期未过半,更新失败。


    • 注意事项

      1. Switcher,Auany也会访问Lmk签署服务更新证书,服务端口必须对Switcher,Auany打开。

      2. Lmk签署服务器,必须运行NTP服务,保证时钟同步,避免签署无效的LmkBundle。


  • 7.13.4 Limax服务运营

    • 配置

      Switcher免配置,所有配置信息由Auany推送。Auany配置中增加一个lmk元素。

      5个属性:

      location:CA为当前limax运营环境签署的证书的location。

      passphrase:location的私钥启用密码,实际运营时,不应该填写该属性,而应该在服务器启动时输入。

      revocationCheckerOptions,trustsPath参见《Key分发系统》服务器运营一节。

      validateDate:配置了当前运营环境是否需要检测LmkBundle过期状态。


    • 虚拟机参数

      limax.auany.LmkManager.defaultLifetime,如果当前运营环境关闭了LmkBundle过期状态检测,通过LmkBundle创建的凭证使用该参数决定过期时间,默认为8640000000,即100天。只要使用了LmkBundle创建凭证,必须设置过期时间,无论当前环境是否检测过期。因为关闭了的过期状态也可能被重新打开。

      limax.auany.LmkManager.renewConcurrency,该参数决定了单个的Auany,Switcher服务器发起LmkBundle更新请求使用的线程数量,默认16。


    • 注意事项

      1. 如果当前运营环境配置为不检测LmkBundle过期状态,那么也不会帮助客户端执行证书更新,同一LmkBundle用于多个Limax运营环境时必须注意到这个问题。

      2. 启用了过期检测的环境,Switcher,Auany必须运行NTP服务,保证时钟同步。


上一页 下一页