Websphere MQ - 如何通过 MQ 队列管理器获取当前使用的证书详细信息

Websphere MQ - how to get currently used certificate details by MQ queue manager

已知队列管理器属性给出了队列管理器当前正在使用的 ssl 密钥库文件的位置。 但是,有没有办法获取队列管理器当前使用的证书详细信息,如证书序列号、到期日等。

openssl 和 gsk 命令查询并仅提供 ssl 密钥库中的证书详细信息。然而,

我问这个是因为,假设是否发生了证书续订,并且假设如果没有在 MQ 上完成刷新(刷新安全类型 (ssl)),那么它只会包含旧证书的详细信息。

所以我需要一个命令或脚本,我可以在其中获取队列管理器当前使用的证书详细信息的输出。请协助。

我认为没有您所要求的功能。

您可以通过查看在 QMGR CERTLABL 设置中设置的证书标签,然后在 openssl/gsk 命令中使用它来查询密钥库,从而确定您的队列管理器应该使用什么证书。例如:

在 MQSC 中:

DISPLAY QMGR CERTLABL

在命令行上:

runmqakm -cert -details -db <keystore> -stashed -label <label from above>

但是,这将显示密钥库中的证书,如果您已启动 TLS 连接然后修改了密钥库内容,则密钥库包含的内容和 MQ 当前使用的内容之间可能存在差异。以上也没有考虑每个频道使用的不同证书。

您可以使用 openssl 查询队列管理器侦听器,该侦听器将 return 通过连接到队列管理器使用的证书。这会导致错误,因为 MQ 不会理解为什么 openssl 只是连接到它然后立即断开连接:

openssl s_client -connect <host>:<port> -showcerts

这应该会提供很多关于当前使用的证书的信息。如果您想查询特定通道正在使用的证书,那么您需要计算出正确的 SNI 以使用此文档页面发送:https://www.ibm.com/support/pages/ibm-websphere-mq-how-does-mq-provide-multiple-certificates-certlabl-capability

如果这些不能满足您使用 MQ 命令的需要,您可以 运行 打印出当前正在使用的证书详细信息,而无需查询磁盘上的密钥库,那么我鼓励您提出功能请求与 IBM MQ 团队:https://www.ibm.com/developerworks/rfe/execute?use_case=changeRequestLanding&PROD_ID=520

您可以使用 openssl 查询主机和端口以获取当前正在 returned 的证书详细信息。

例如:

echo -n | openssl s_client -connect dnsname.domain.com:port 2>&1 | openssl x509 -noout -issuer -subject -dates

这将 return 类似于下面的内容,其中发行者和主题将是完整的 DN 值。 notAfter 是证书的到期日期。

issuer= /C=....
subject= /C=....
notBefore=Nov  1 13:45:35 2020 GMT
notAfter=Nov  1 13:45:34 2021 GMT