我创建了证书请求,将此请求发布给权限,获得了签名证书。使用iKeyman我已经添加了所有签名者证书并成功将签名证书收到我的密钥数据库中。我看到在添加个人证书时如何删除请求。我关闭了iKeyman,当我再打开它时,个人证书。不再列出?因为我不能再收到了,因为请求不再存在了。我如何重新创建相同的请求,或者有任何其他方式将个人证书添加到我的密钥数据库。
评论更新2015年9月15日
runmqakm -cert -list
显示了证书清单
操作系统 - Windows Server 2008 R2
IKeyman版本8.0.382.CMS提供商版本2.45
执行所有操作的帐户是本地管理员。
我的输出:
C:\ProgramData\IBM\MQ\ssl>runmqakm -cert -list all -db key.kdb
5724-H72 (C) Copyright IBM Corp. 1994, 2014.
Source database password : ******
Certificates found
* default, - personal, ! trusted, # secret key
! XXX-Root-CA
! XXX-Intermediate-CA
! XXX-Issuing-CA
! ibmwebspheremqusapp1u
C:\ProgramData\IBM\MQ\ssl>runmqakm -certreq -list all -db key.kdb
5724-H72 (C) Copyright IBM Corp. 1994, 2014.
Source database password : ******
No certificate requests were found
答案 0 :(得分:1)
你是正确的,KDB没有个人证书,没有出色的CSR。但是,如果具有标签ibmwebspheremqusapp1u
的证书是应该是个人证书的证书,则它现在作为受信任证书加载。如上所述,无法从KDB恢复私钥,如果没有备份文件,则该证书无法恢复。您可以期待的最好的是CA是允许客户重新密钥证书的CA.
如果没有发出runmqakm -cert -add
,就无法到达此状态。预期的命令将是runmqakm -cert -receive
,它将CA的响应与原始未完成的CSR相结合,并创建完整的个人证书。要么已经完成了,要么这不是创建CSR的KDB,因为正如您所指出的那样,没有未完成的CSR。
假设没有导致此问题的GSKit错误,并且这与创建CSR的KDB相同,那么在成功接收CSR后的某个时刻,个人证书将被删除,并且CA的响应将使用{{{ 1}}。替代方案是明确删除了CSR(我猜你会记得,如果是这种情况)或者GSKit有一个令人讨厌且危险的错误,你到目前为止是唯一发现的人。
从屏幕的这一侧很难明确地确定GSKit错误或用户错误,但是从最终到a)可以防止这种情况再次发生;和b)可能做出明确的决定。 “我怎么做,”你问?
一旦拥有私钥,CSR或个人证书,在发出命令之前,请始终备份KDB或JKS。您始终可以还原受信任的证书,但私钥或包含私钥的任何内容都是独一无二且不可替代的。不要因为存在唯一的副本而失去它。
例如,在提交CSR并收到CA的响应后,将runmqakm -cert -add
文件复制到key.*
并将备份文件标记为只读,然后再接收CSR。如果key.[timestamp].*
成功,那么你很高兴。如果没有,您可以将备份复制到坏的kdb上,或者复制到一组新的kdb文件中(从不对备份进行操作!)并尝试重新创建问题以确定它是错误还是用户错误。
具有优秀CSR的备份KDB将始终让您回到创建CSR后您所处的状态,以便您可以根据需要多次回溯您的步骤。如果您可以可靠地重新创建错误并认为它是GSKit错误,请与IBM打开PMR。这是一个不太可能的场景,但我知道它发生是因为我曾经发现一个GSKit错误,吹走了整个密钥库。因此,我坚持不懈地坚持改变前备份战略。和你一样,我也很难学到它。