TL; DR:是的。
当您使用IBM GSKit创建CSR(例如runmqakm
)时,结果是一个未签名的证书和CSR文件本身。 CSR密码绑定到保留在密钥库的.rdb
文件中的未签名证书。在这一点上,签名的CSR不能只被接收到任何密钥库中。
当您收到签名的CSR时,它将与待处理的未签名证书合并并移至密钥库的.kbd
文件。此时,它是一个有效的个人证书,其中包含您指定的标签名称(本例中为ibmwebspheremqqmgr1
)和您指定的DN。
一旦完成,你有一个可用的个人证书。如果您想在另一个QMgr上使用它,您需要通过以下两种方式之一将该证书颁发给该其他QMgr:
- 复制组成密钥库的文件集。
- 将个人证书导出到文件中,然后将该文件导入到其他QMgr的密钥库中。
如果您复制了整个密钥库并且其他QMgr也被命名为QMGR1
那么您可以立即使用它们。如果另一个QMgr具有不同的名称,则必须将该证书重命名为ibmwebspheremqqmgr1
以外的其他名称,或者在现代QMgr中将该QMgr的CERTLABL
属性设置为ibmwebspheremqqmgr1
。通常,您希望证书标签反映使用它的QMgr的名称,因此建议不要使用名为QMGR2
且CERTLABL
为ibmwebspheremqqmgr1
的QMgr。
如果您导入证书,则可以在导入命令期间设置标签。
请记住,标签和可分辨名称是两个完全不同和不相关的东西。可分辨的名称是CA验证并签名的值,并且与证书中的密钥密码相关。这是远程连接伙伴决定是否信任的事情。
该标签是本地QMgr或客户端如何找到自己的证书。想象一下你已经创建了两个个人证书,QMgr需要知道要发送哪一个证书。通过将证书的标签与期望值ibmwebspheremq[qmgr name in lower case]
或QMgr的CERTLABL
属性进行匹配(如果它不为空),可找到正确的证书。
这就是为什么证书标签可以很容易地与GSKit的命令来改变,但分辨名称是不可变的。
考虑到这一点,注意外,许多内部的CA将期望证书的证书通用名称包含完全合格的主机名,其中证书将被使用。 HTTPS客户端在连接时检查证书CN是否与主机名匹配。对于MQ连接,情况并非如此。您可以将任何内容放入您的CA将签名的CN中,并将其用于任何任意名称的QMgr。所以,你的证书可以有CN=QMGR1
和QMGR可以住在mqhost.yourcompany.com
和MQ喜欢它就好了。但是,使用新的MQ REST API的客户端不会!这是人们希望使用新的MQ REST API的一个重要区别。
最后,请注意,最好的做法是产生在那里他们将要使用的证书,使用文件系统权限保护他们,让他们在本地存储,永不复制或从该位置移动。发明了公钥/私钥加密器来解决安全交换私钥的非常困难的问题。如果个人证书被复制,它首先会破坏使用它们的目的。
各种商业PKI软件包(即IBM Tivoli Key Lifecycle Manager,Venafi等)都使用FIPS认证的算法解决了这个问题,该算法不会在磁盘上存储密钥或加密基元,在释放之前安全擦除存储空间,并且通常需要特别注意不要将密钥保留在传输,磁盘或内存中。如果您必须复制个人证书,请使用专为此目的设计的真正PKI套件(如果该公司有一套)。否则,使用非常长的随机密码将它们导出到.p12
,并避免使用电子邮件,FTP或其他非安全方式复制文件。
在ServerFault上看看这个问题:https://serverfault.com/q/481068/349846 – Haxiel
@XSurgent对我来说很不错。我相信这个问题回答了我的问题。我可以重新使用CSR,CA认证的CER。针对MQ,我相信我必须首先在host2上加载CSR,然后再次接收CER,对吧?我想知道如何在不创建CSR的情况下“加载”CSR。我看到一个选项在runmqakm中重新创建它,以前从未使用过,也不确定它是否可行。 – arrehman