MQ 通道没有 SSL 或 TLS 证书(运行 来自终端 - Windows 10)
No SSL or TLS certificate for MQ Channel (Running from terminal - Windows 10)
我正在尝试使用以下命令连接到我工作的公司的远程 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 Manager
从 cer.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 人员不需要此证书标签。
最后,OP (@EdgarHernandez) 注意到错误是 CipherSpec 中的错字,TLS_RSA_WITH_AES_256CBC_SHA256
而不是正确的名称 TLS_RSA_WITH_AES_256_CBC_SHA256
是 causing/contributing 到 2393
将我在此答案的评论中提出的故障排除说明放在一起,以便将来查看类似错误的 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
来获取证书。
使用以下命令检查您是否列出了个人证书,它应该在第一列中以 -
为前缀,如果仅以 !
为前缀则为只有密钥的 public 部分,而不是私有的。
runmqakm -cert -list -db t:\Desktop\certificates\key.kdb -stashed
我正在尝试使用以下命令连接到我工作的公司的远程 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 Manager
从 cer.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 人员不需要此证书标签。
最后,OP (@EdgarHernandez) 注意到错误是 CipherSpec 中的错字,TLS_RSA_WITH_AES_256CBC_SHA256
而不是正确的名称 TLS_RSA_WITH_AES_256_CBC_SHA256
是 causing/contributing 到 2393
将我在此答案的评论中提出的故障排除说明放在一起,以便将来查看类似错误的 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
来获取证书。
使用以下命令检查您是否列出了个人证书,它应该在第一列中以 -
为前缀,如果仅以 !
为前缀则为只有密钥的 public 部分,而不是私有的。
runmqakm -cert -list -db t:\Desktop\certificates\key.kdb -stashed