【问题标题】:No SSL or TLS certificate for MQ Channel (Running from terminal - Windows 10)没有用于 MQ 通道的 SSL 或 TLS 证书(从终端运行 - Windows 10)
【发布时间】:2020-10-03 20:33:37
【问题描述】:

我正在尝试使用以下命令连接到我工作的公司的远程 MQ,该命令是在我的机器上安装 MQ 客户端 (IBM MQ version 9.04.0) 后出现的,

输入:

P:\>amqssslc -s TLS_RSA_WITH_AES_256CBC_SHA256 -k "t:\Desktop\certificates\key" -x "server.com(1414)" -c "0000%XXXX%QMGR" -m QMGR

输出:

Sample AMQSSSLC start Connecting to queue manager
Using the server connection channel 0000%XXXX%QMGR
on connection name server.com(1414).
Using SSL CipherSpec TLS_RSA_WITH_AES_256CBC_SHA256
Using SSL key repository stem t:\Desktop\certificates\key
No OCSP configuration specified
MQCONNX ended ith reason code 2393

其中-k表示key.*路径,即一组文件(kdb、rdb、sht)。这些文件是使用IKeyMan - IBM Key Managercer.jks 文件创建的,当前开发人员使用该文件连接网络应用程序。

错误日志文件显示以下错误:

06/11/202020 19:29:45 - Process(25780.1) User(username) Program(amqssslc.exe)
                      Host(myhost) Installation(Installation1)
                      VRMF(9.1.3.0)
                      Time(2020-06-11T09:24:53.270Z)
                      RemoteHost(xx.xx.xxx.56)
                      CommenInsert1(0000%XXXX%QMGR)
                      CommenInsert2(server.com(1414))

AMQ9642: No SSL or TLS certificate for channel '0000%XXXX%QMGR'.

EXPLANATION:
The channel '0000%XXXX%QMGR' did not supply a certificate to use during SSL
or TLS handshaking, but a certificate is required by the remote queue manager. 

The remote host is 'server.com(1414)'. 

The channel did not start.
ACTION:
Ensure that the key repository of the local queue manager or MQ client contains
a certificate which is associated with the queue manager or client.
Alternatively, if appropriate, change the remote channel definition so that its
SSLCAUTH attribute is set to OPTIONAL and it has no SSLPEER value set. 

这让我相信该错误与通道端的握手有关。 Jks 证书适用于与服务器上的队列建立连接的其他开发人员。

我的 mqclient.ini 文件添加了以下配置:

TCP:
    KeepAlive = Yes

CLientExithPath: 
    ExitsDefaultPath=C:\ProgramData\IBM\MQ\exits
    ExitsDefaultPath64=C:\ProgramData\IBM\MQ\exits64

SSL: 
    OCSPAuthentication=NO
    OCSPCheckExtension=NO
    CDPCheckExtension=NO

可能是什么问题?我还尝试更改 我的证书的标签 以指示 key.kdb 文件中有个人证书,但是,它会丢弃一个不同的错误,这是公司 IT 人员告诉我的我工作,就是不需要这个证书标签。

【问题讨论】:

  • 嗨乔希,感谢您的快速建议。版本是 9.1.3.0,我们有不同的机器,我用这个当前版本重新运行了所有东西。当使用 -l 运行以指示个人证书时(正如您在运行 runmqakm 时提到的那样,它包含 -)返回完全相同的错误。我使用 IBM 密钥管理 GUI 将 jks 转换为 kdb。首先打开 jks,然后打开saving as kdb。这一步错了吗? @JoshMC
  • 对不起,我更正了密码并使用带有-l 的证书标签重新运行命令,这是我现在得到的错误,MQCONNX ended with reason code 2035
  • 这是一个安全错误,但您正在通过 tls 协商。
  • 你知道可能是什么问题吗?
  • 检查的最佳位置是队列管理器的AMQERR01.LOG 文件。

标签: ssl ssl-certificate ibm-mq keystore


【解决方案1】:

最后,OP (@EdgarHernandez) 注意到错误是 CipherSpec 中的拼写错误,TLS_RSA_WITH_AES_256CBC_SHA256 而不是正确的名称 TLS_RSA_WITH_AES_256_CBC_SHA256 导致/促成了 2393

将我来自 cmets 的故障排除说明放在此答案中,以便将来查看类似错误的 SO 用户可以搜索它们。


Java/JMS 选择证书发送到队列管理器的方式与使用 C 库的客户端选择证书发送到队列管理器的方式有所不同。

Java/JMS:

Java 不使用证书标签,它根据队列管理器信任的颁发者提供一个它认为匹配的证书来呈现给队列管理器,因此拥有由以下人员颁发的个人证书就足够了队列管理器信任的 CA。

C 库客户端:

C 库客户端(amqssslc 是)根据证书标签选择证书。默认情况下,它将查找标签ibmwebspheremq<lowercase username>,因此如果您以用户edgar 运行,MQ 客户端将查找的证书是ibmwebspheremqedgar

  • 在 MQ v8.0 及更高版本中,您可以指定一个替代标签而不是默认值。 amqssslc 使用 -l 标签选项执行此操作。因此,如果您的证书仅标记为 edgar,您应该可以添加 -l edgar 以获取证书。

使用以下命令检查您是否列出了个人证书,它应该在第一列中以- 为前缀,如果它仅以! 为前缀,那么它只是钥匙,不是私人的。

runmqakm -cert -list -db t:\Desktop\certificates\key.kdb -stashed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-21
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2013-04-07
    • 1970-01-01
    相关资源
    最近更新 更多