我们的一个队列管理器证书即将过期,建议更新比更换旧证书便宜得多。以下是我们正在执行的步骤(通过IBM密钥管理):
- 选择个人证书并选择re-create - renew .csr
- 发送更新。向CA发送COMODO证书- rerenewedcomodo
- 选择个人证书,选择"接收",导入RenewedComodo。(刷新安全)
创建新证书时,我们选择"个人证书请求"并选择"新建"。这是第一步。我们按照第二步和第三步。
这是我的查询,除了选择重新创建之外,没有我设置的差异。
-
当我有两个证书为RenewalCOMODO和oldCOMODO时,队列管理器如何知道哪个是正义的?
-
如果它选择了没有过期的,它不会在数据库中有过期的吗?
-
如果我们需要删除旧的证书,在添加了新的证书后,与替换证书有什么不同?
在得到答案之前需要一点背景知识。
当您最初创建CSR时,您实际得到的是公钥/私钥对和证书签名请求或"CSR"。CSR包含公钥和请求的属性(如Distinguished Name)。使用您的私钥对CSR进行签名,以便任何接收方都可以使用嵌入的公钥来验证CSR和请求的属性是否未被篡改。
鲜为人知的是,CA并不一定要应用CSR中提供的所有属性。例如,如果购买的证书是Domain Validated证书,并且CSR包含OU字段的值,则CA将简单地删除它们,只留下DN和SAN字段以及它们自己的信息。因此,您获得的证书可能具有与原始CSR不同的字段。
当您从正在使用的证书中重新创建CSR时,除了新的CSR反映CA最初所做的任何更改外,将再次发生相同的过程。仔细检查原始CSR和新生成的CSR通常会发现SAN中的差异,或者电子邮件联系人已添加到DN中。然而,从CA的角度来看,这些差异只是表面上的。
记住这些,让我们再看一遍问题。
当我有两个证书为RenewalCOMODO和oldCOMODO时,队列管理器如何知道哪个是正确的?
假设您谈论的是CA在响应原始CSR和更新CSR之后提供的工件,QMgr不知道哪个是哪个。您可以在其中一个上运行receive
命令,并且假设它们都由相同的CA签名并使用相同的签名者链,那么两者都可以工作。
管理员有责任验证是否安装了正确的证书。
如果它选择的是没有过期的,它不会在数据库中有过期的那个吗?
。每个成功的receive
命令保留个人证书的私有部分并替换公共部分。标签与私有部分相关联,并检查其唯一性,因此您不能(或者至少应该如果没有错误)能够在同一个KDB中有两个副本。
如果我们需要删除旧的证书,在添加了新的证书后,与替换证书有什么不同?
确保您收到正确的证书。始终执行runmqakm -cert -details
命令或使用GUI检查证书。
额外的建议:
- 在使用KDB之前总是要做一个副本。
- 将csr和cert的副本保存在KDB目录中。
- 我喜欢在文件名中使用时间戳,这样历史记录就很明显了。我的文件名都以YYYYMMDD开头,如
20150908_QMName_CSR.arm
和20150908_QMName_CSR_signed.arm
。 - 确保将证书文件、KDB和保存它们的目录的文件权限设置为拒绝MQM服务帐户以外的任何人的任何访问。如果不可能,则允许组访问,但要确保mqm组的成员尽可能少。任何可以阅读证书的人都可以使用它们。要使用包含的证书,不需要知道KDB的密码。
- 在执行维护时,我喜欢制作KDB的新副本(如前所述带有时间戳的文件名),当我确定它准备好时,我更改QMgr的
SSLKEYR
属性以指向它。然后我将旧文件更改为只读并在QMgr上发布RESET SECURITY TYPE(SSL)
。 始终记得在QMgr上发出
RESET SECURITY TYPE(SSL)
。这是一个非常具有破坏性的命令,所以在QMgr繁忙时尽量不要发出它。它将需要关闭所有通道,并且大量的重新连接尝试将阻止它快速完成。