我们说,我在host1中使用队列管理器QMGR1来创建CSR并获得标记为ibmwebspheremqqmgr1的CA验证证书。我可以在另一个主机host2中使用相同的证书(及其根和中间链)加载一个名为same的队列(即QMGR1)吗?换句话说,当我们收到'时,需要有证书。使用rumqakm的证书还是没有?我们可以只是添加'证书(就像我们做链条)?如果问题不明确,请询问,我可以提供更多详情。在我的情况下,host2是生产。 host1是我们测试连接的QA环境。感谢。
更新评论26DEC16中的问题
特定于MQ,我相信我必须首先在host2上加载CSR然后再次收到CER,对吧?我想知道我怎么加载' CSR没有创建它。我看到一个选项,在runmqakm中重新创建它,之前从未使用过,不确定是否可行。
答案 0 :(得分:4)
TL; DR:是的。
使用IBM GSKit(例如runmqakm
)创建CSR时,结果是未签名的证书和CSR文件本身。 CSR以加密方式绑定到保留在密钥库的.rdb
文件中的未签名证书。此时签名的CSR无法接收到任何密钥库中。
收到已签名的CSR后,它会与待处理的未签名证书合并,并移至密钥库的.kbd
文件中。此时,它是一个有效的个人证书,其中包含您指定的标签名称(在本例中为ibmwebspheremqqmgr1
)和您指定的DN。
完成后,您将拥有可用的个人证书。如果您想在另一个QMgr上使用它,您需要以两种方式之一将该证书提供给其他QMgr:
如果您复制了整个密钥库,而另一个QMgr也命名为QMGR1
,那么您可以立即使用它们。如果其他QMgr具有不同的名称,则您必须将证书重命名为ibmwebspheremqqmgr1
之外的其他内容,或者在现代QMgr中将QMgr的CERTLABL
属性设置为{ {1}}。通常,您希望cert标签反映使用它的QMgr的名称,因此不建议使用ibmwebspheremqqmgr1
QMGR2
CERTLABL
的QMgr。
如果导入证书,则可以在导入命令期间设置标签。
请记住,标签和专有名称是两个完全不同且不相关的东西。可分辨名称是CA验证和签署的值,并且以加密方式绑定到证书中的密钥。远程连接伙伴决定是否信任。
标签是本地QMgr或客户端如何找到自己的证书。想象一下,您创建了两个个人证书,QMgr需要知道要发送哪个。它通过将证书的标签与期望值ibmwebspheremqqmgr1
或QMgr的ibmwebspheremq[qmgr name in lower case]
属性(如果它不是空白)匹配来找到正确的值。
这就是为什么可以使用GSKit命令轻松更改证书标签,但专有名称是不可变的。
考虑到这一点,请注意外部CA和许多内部CA都希望证书的证书Common Name包含将使用证书的完全限定主机名。 HTTPS客户端在连接时检查证书CN是否与主机名匹配。对于MQ连接,情况并非如此。您可以在CN中签署任何CA签名的内容,并在任意名称的QMgr上使用它。因此,您的证书可以有CERTLABL
,而QMgr可以存在CN=QMGR1
,而MQ也很喜欢它。但是,使用新MQ REST API的客户端不会!对于希望使用新MQ REST API的人来说,这是一个重要的区别。
最后,请注意,最佳做法是生成将使用它们的证书,使用文件系统权限保护它们,将它们保存在本地存储中,不要从该位置复制或移动它们。公钥/私钥加密是为解决安全交换私钥这一非常棘手的问题而发明的。如果个人证书被复制,那么首先就会失去使用它们的目的。
各种商业PKI包(即IBM Tivoli Key Lifecycle Manager,Venafi等)都使用FIPS认证的算法解决了这个问题,这些算法不会在磁盘上存储密钥或加密原语,在发布之前安全地擦除内存空间它,并且通常需要极度小心,不要让密钥在传输,磁盘或内存中不受保护。如果您必须复制个人证书,请使用为此目的设计的真正PKI包(如果公司有)。否则,使用非常长且随机的密码将它们导出到mqhost.yourcompany.com
,并避免使用电子邮件,FTP或其他非安全方式复制文件。