我们可以重用WebSphere MQ TLS / SSL证书吗?

时间:2016-11-29 16:03:44

标签: ssl certificate ibm-mq mq

我们说,我在host1中使用队列管理器QMGR1来创建CSR并获得标记为ibmwebspheremqqmgr1的CA验证证书。我可以在另一个主机host2中使用相同的证书(及其根和中间链)加载一个名为same的队列(即QMGR1)吗?换句话说,当我们收到'时,需要有证书。使用rumqakm的证书还是没有?我们可以只是添加'证书(就像我们做链条)?如果问题不明确,请询问,我可以提供更多详情。在我的情况下,host2是生产。 host1是我们测试连接的QA环境。感谢。

更新评论26DEC16中的问题
特定于MQ,我相信我必须首先在host2上加载CSR然后再次收到CER,对吧?我想知道我怎么加载' CSR没有创建它。我看到一个选项,在runmqakm中重新创建它,之前从未使用过,不确定是否可行。

1 个答案:

答案 0 :(得分:4)

TL; DR:是的。

使用IBM GSKit(例如runmqakm)创建CSR时,结果是未签名的证书和CSR文件本身。 CSR以加密方式绑定到保留在密钥库的.rdb文件中的未签名证书。此时签名的CSR无法接收到任何密钥库中。

收到已签名的CSR后,它会与待处理的未签名证书合并,并移至密钥库的.kbd文件中。此时,它是一个有效的个人证书,其中包含您指定的标签名称(在本例中为ibmwebspheremqqmgr1)和您指定的DN。

完成后,您将拥有可用的个人证书。如果您想在另一个QMgr上使用它,您需要以两种方式之一将该证书提供给其他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或其他非安全方式复制文件。