如何验证 WebSphere MQ 是否使用 SSL?

How to verify if WebSphere MQ is using SSL?

是否有 运行 的命令、要检查的配置文件或在 IBM WepSphere MQ Explorer 中进行可视化检查的方法 WebSphere MQ 正在使用 SSL?

WebSphere MQ 版本:

user@server:/ #dspmqver
Name:        WebSphere MQ
Version:     7.0.1.5

是的!为了让 QMgr 使用 SSL,通道必须为 SSLCIPH 指定一个值。如果频道在 SSLCIPH 中指定了某些内容,那么在没有 SSL 的情况下频道将不会 运行。只需显示通道定义并查看 SSLCIPH 字段。如果它不为空且通道为 运行ning,则表明它正在使用 SSL。

(注意:MQ 使用 TLS,真的。它从未使用过 SSL。它一直使用 TLS,但允许 SSL 密码在 TLS 下 运行。)

但是,这并不意味着任何其他渠道都在使用 SSL。任何没有 SSLCIPH 值的通道都将 运行 没有 SSL,即使一个或多个通道 do 指定了一个值。由于 MQ 侦听器是混杂的,因此远程 QMgr 或应用程序可以请求启动任何通道。

因此,当启用 QMgr 以使用 SSL 时,有必要确保 所有 通道使用 SSL 或使用 CHLAUTH 规则来确保非 SSL 通道未由预期使用 SSL 的远程节点启动。

如果 SSL 通道还指定了 SSLCAUTH(REQUIRED)(这是默认设置),则客户端或远程 QMgr 将需要出示证书以供本地 QMgr 进行验证。在这种情况下,如果您显示通道状态,Peer Name 字段将包含一个非空值。这称为相互认证。使用相互身份验证时,请务必使用 SSLPEERCHLAUTH 规则通过可分辨名称指定允许连接哪些证书。

仅供参考 - 2015 年 9 月的版本 7.0.1 of MQ is going out of support

根据评论更新
要查看通道属性或状态,请使用 WMQ Explorer 或 runmqsc 命令。 runmqsc 命令可以交互使用或在脚本中使用。要 运行,它只需以交互方式键入 runmqsc [qmgr name],然后输入您想要的命令。在这种情况下,对于通道定义,它们将是 DIS CHL([channel name]) SSLCIPH SSLCAUTH,对于通道状态,它们将是 DIS CHS([channel name]) SSLCIPH SSLCAUTH

(在 [channel name] 处替换实际的频道名称。)

要在脚本中执行相同的操作,请尝试以下操作:

echo DIS CHL([channel name]) SSLCIPH SSLCAUTH | runmqsc [qmgr name]
echo DIS CHS([channel name]) ALL              | runmqsc [qmgr name]

在非 Windows 系统上,由于 shell 特殊字符,您需要引用参数:

echo "DIS CHL([channel name]) SSLCIPH SSLCAUTH" | runmqsc [qmgr name]
echo "DIS CHS([channel name]) ALL             " | runmqsc [qmgr name]

在 AIX 上 OS 这有效。

命令:

@:/mq/bin #echo "display chl(fooChannel) all" | runmqsc fooQueueManager| grep SSL

命令输出:

   SHARECNV(100)                            SSLCAUTH(REQUIRED)
   SSLCIPH( )                              SSLPEER( )

由于 SSLCIPH 为空,因此 SSL 被禁用。