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服务,保证时钟同步。
-