7.9 PKIX支持


  • 7.9.4 管理命令

    limax.pkix.tool包,提供了pkix相关管理工具的实现。一共9条命令。以下命令,如果涉及到私钥访问的,都会提示输入私钥使用密码,涉及到私钥创建的,会2次确认私钥创建密码。


    • java -jar limax.jar pkix initca <locationROOT> (<locationCA>|<keygen/.pub>) <subject> <yyyyMMdd> <yyyyMMdd> <OcspDomainOfRoot>

      使用ROOTCA证书,签署一个CA证书,例如:


      java -jar limax.jar pkix initca "file:ca@/work/pkix/root" "pkcs12:/work/pkix/ca/ca0.p12#ec/256" "dc=ca,dc=limax-project,dc=org" "20150101" "20200101" "root.limax-project.org"
      

      使用上面签署的ROOTCA证书,签署subject为"dc=ca,dc=limax-project,dc=org"的CA证书。

      在这里,locationCA使用ec/256算法。允许缺省算法参数, 缺省的情况下, 直接继承ROOTCA的算法参数。使用ROOTCA时也可以使用"file:ca@/work/pkix/root#rsa/1024/512"这样的描述形式, 在这里因为证书已经签署,所以rsa/1024没有意义,被忽略,512指定了签名长度,覆盖了CA证书签署时使用的256长度。

      "root.limax-project.org" 指定ROOTCA关联的OcspServer的域名。证书签署方法使用从该域名的派生的OCSP服务信息与CRL分发点信息填写证书, PKIX应用系统需要访问这些URL获得证书回收状态。


    • java -jar limax.jar pkix initocsp <location> <locationOcsp> <subject> <yyyyMMdd> <yyyyMMdd>

      签署一份OCSP服务专用证书,通常情况下这里的location就是locationROOT,ROOTCA规划为离线访问,需要运行一个关联的OcspServer,提供下级CA的回收状态,该证书即是提供给OcspServer用来签名状态响应的。


    • java -jar limax.jar pkix gencrl <location> <crlfile> <nextUpdate(yyyyMMdd)> [[-](CertDir|CertFile)]

      签署CRL,通常情况下这里的location就是locationROOT,ROOTCA规划为离线访问,ROOTCA的下级CA相关CRL必须离线生成,然后提供相应下载。

      nextUpdate,指出下一次CRL更新的预期时间。

      CertDir|CertFile参数缺省时,如果crlfile文件不存在,生成一份包含空列表的crlfile;如果存在则更新crlfile的nextUpdate信息。

      CertFile,可以是X509证书格式,也可以是PKCS7格式,所有由location指定的CA签署的证书被提取出来,回收掉。

      CertDir目录扫描一层,扫描内部所有CertFile执行回收。

      如果CertFile或者CertDir之前前缀了"-",表示执行recall操作,从CRL列表中移除相应证书。


    • java -jar limax.jar pkix ca [path to caserver.xml]

      根据caserver.xml的配置运行CA服务器。后文详细介绍。


    • java -jar limax.jar pkix ocsp [path to ocspserver.xml]

      根据ocspserver.xml的配置运行独立OcspServer,一般提供给ROOTCA使用。后文详细介绍。


  • 7.9.5 CAServer

    参考caserver.xml,进行说明。


    • CAServer顶层元素


      <CAServer archive="/work/pkix/ca/certs" authCode="123456" domain="ca.limax-project.org">
      ......
      </CAServer>
      

      3个属性:

      domain:指定了该CAServer运行的服务器域名,由该CAServer签发的所有证书的OCSP服务信息,CRL分发点信息,均通过该域名派生出来。

      archive:该CAServer签发的所有证书的存档目录,包括Renew过程签发的证书。目录内文件以"certSerialNumber".cer 方式命名, certSerialNumber为证书序列号, 文件格式为DER。

      authCode:授权码种子,实际运营时,不应该填写该属性,而应该在服务器启动时输入。这个种子用来生成TOTP授权码程序,签署证书时使用该程序生成当时的授权码,填写证书服务页面的授权码字段。

      CAServer运行后,当前目录下将生成authcode.jar,需要填写授权码时,可以java –jar authcode.jar运行该程序。

      在这个界面下,输入这一次运行CAServer提供的授权码种子,然后回车,切换为如下界面。

      点击该界面的authCode按钮,生成的TOTP密钥的将被生成到系统剪贴板,直接粘贴到相应页面即可。

      注意,每次启动CAServer都会生成新的authcode.jar,之前的失效,即便使用了同样的授权码种子。


    • CAService元素


      <CAService location="pkcs12:/work/pkix/ca/ca0.p12" passphrase="123456"/>
      

      2个属性:

      location:ROOTCA为CA签发的私钥,证书链location。

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

      该元素允许多条,所有location指向的CA证书必须具有相同的Subject,有效期不同,整体快要过期时(由最后过期的CA证书的过期时间减去该CAServer签发证书的最长有效期决定),应该向ROOTCA发起申请,添加配置。已经过期的CA,可以从配置中剔除。


    • CertServer元素


      <CertServer port="8080" publicKeyAlgorithmForGeneratePKCS12="rsa/1024">
      ......
      </CertServer>
      

      两个属性:

      port:CertServer的HTTP服务运行端口8080。CertServer服务绑定在localhost接口上。

      publicKeyAlgorithmForGeneratePKCS12:CAServer支持CertServer帮助生成私钥,打包成PKCS12文件发送给申请者的形式,该属性配置了密钥对生成算法。

      CertServer内部元素,与页面元素的配置选项相对应,可以根据具体需求调整。

      特别的,subject输入必须是合法的X500 Distinguished Name。若有进一步的约定,可以配置Subject元素的pattern相关属性,使用java.util.regex.Pattern支持的模式,校验subject合法性,template属性提供subject字段初始模板,简化页面输入。

      NotAfter参数period系列属性单位为天。

      其它元素内mandatory属性,指定相应页面元素是否disable。

      非法输入在相应位置用红框提示。


      访问http://localhost:8080/可以看到如下页面:

      该页面使用申请方提供的公钥(java –jar limax.jar genkey 生成的.pub文件)生成.p7b证书链文件。

      点击publicKey,页面切换为:

      由CAServer生成私钥,输出.p12文件,这里设定的PKCS12Passphrase(至少6位),必须选择独立渠道提供给申请方。

      该页面用来回收证书,输入内容可以是独立的证书文件,也可以是之前签发的.p7b文件。

      该页面用来撤销回收,输入内容同上。


上一页 下一页