我们正在运行Websphere MQ 9.1,并且我们的遥测(MQTT)通道被配置为需要SSL身份验证。
我们的证书只有几个月的寿命,我们想要自动化替换这些证书的过程。我可以轻松地创建一个新的.kdb文件并将其放置在SSLKEYR位置,但这并不会自动使通道使用新的证书。
我已经尝试了REFRESH SECURITY TYPE(SSL)
命令,并且这个命令成功了(输出:AMQ8560I: IBM MQ security cache refreshed.
),我认为它应该能工作,参见:https://www.ibm.com/docs/en/ibm-mq/9.1?topic=authorities-refreshing-tls-security
刷新TLS安全性 如果对密钥存储库进行更改,则可以刷新在通道运行时保存在内存中的密钥存储库的副本,而无需重新启动通道。刷新密钥存储库的缓存副本时,将使用新信息更新当前在队列管理器上运行的TLS通道。关于这项任务 使用TLS保护信道时,数字证书及其相关私钥存储在密钥存储库中。当通道运行时,密钥存储库的副本保存在内存中。如果对密钥存储库进行更改,则可以刷新保存在内存中的密钥存储库的副本,而无需重新启动通道。刷新密钥存储库的缓存副本时,将更新当前正在运行的所有TLS通道: 允许使用TLS的发送方、服务器和群集发送方通道完成当前批邮件。然后,通道使用密钥存储库的刷新视图再次运行SSL握手。停止使用TLS的所有其他信道类型。如果已停止通道的合作伙伴端定义了重试值,则通道重试并再次运行SSL握手。新的SSL握手使用密钥存储库内容的刷新视图、用于证书吊销列表的LDAP服务器的位置以及密钥存储库的位置。在服务器连接通道的情况下,客户端应用程序失去到队列管理器的连接,必须重新连接才能继续。
但是,当我用不同的证书替换KDB并刷新安全性时,我的客户端在从通道中清除它们之后仍然重新连接。重新启动通道时,客户端将按预期保持脱机状态。
为什么在这种情况下不刷新安全性(因为它是一个遥测通道?)有没有办法在不停止和启动频道的情况下解决这个难题?
发布于 2021-07-07 16:56:47
在IBM中,MQTT组件称为MQXR。有3个日志文件可以检查:
(1)
Windows: {MQ_DATA_PATH}\qmgrs\{qmgr_name}\mqxr.stdout
Windows: {MQ_DATA_PATH}\qmgrs\{qmgr_name}\mqxr.stderr
Unix: {MQ_DATA_PATH}/qmgrs/{qmgr_name}/mqxr.stdout
Unix: {MQ_DATA_PATH}/qmgrs/{qmgr_name}/mqxr.stderr
(2)
Windows: {MQ_DATA_PATH}\qmgrs\{qmgr_name}\errors\mqxr_0.log
Unix: {MQ_DATA_PATH}/qmgrs/{qmgr_name}/errors/mqxr_0.log
日志文件mqxr_0.log应该有任何与刷新安全性相关的错误消息。
这里有一个来自MQ知识中心的有趣的笔记
使用TLS的所有其他信道类型都会使用STOP CHANNEL MODE(FORCE) STATUS(INACTIVE)
命令停止。如果已停止消息通道的合作伙伴端定义了重试值,则通道重试和新的TLS握手将使用TLS密钥存储库内容的刷新视图、用于证书吊销列表的LDAP服务器的位置以及密钥存储库的位置。在服务器连接通道的情况下,客户端应用程序失去到队列管理器的连接,必须重新连接才能继续。
因此,您发出的停止通道命令基本上就是便条上说的刷新安全命令将做的事情。
最后,您可能应该使用IBM打开一个PMR (帮助票证),看看他们说了些什么,如果是bug,可能会修复这个问题。
https://stackoverflow.com/questions/68271880
复制相似问题