WebSphere MQ 8和IBM MQ 9的TLS网络配置

WebSphere MQ 8和IBM MQ 9的TLS网络配置,websphere,ibm-mq,tls1.2,websphere-8,Websphere,Ibm Mq,Tls1.2,Websphere 8,我在队列管理器上设置tls时遇到问题。 以下是我在windows 10上使用的命令,用于创建和设置队列管理器以及通道和密钥库 "C:\Program Files\IBM\MQ\bin64\crtmqm.exe" QMTLS "C:\Program Files\IBM\MQ\bin64\strmqm.exe" QMTLS "C:\Program Files\IBM\MQ\bin64\runmqsc.exe" QMTLS DEF LISTENER(TCP.1416) TRPTYPE(TCP) CO

我在队列管理器上设置tls时遇到问题。 以下是我在windows 10上使用的命令,用于创建和设置队列管理器以及通道和密钥库

"C:\Program Files\IBM\MQ\bin64\crtmqm.exe" QMTLS
"C:\Program Files\IBM\MQ\bin64\strmqm.exe" QMTLS

"C:\Program Files\IBM\MQ\bin64\runmqsc.exe" QMTLS
DEF LISTENER(TCP.1416) TRPTYPE(TCP) CONTROL(QMGR) PORT(1416) REPLACE

START LISTENER(TCP.1416)

DEF CHL(CONNECTION.TLS) CHLTYPE(SVRCONN) TRPTYPE(TCP) SSLCIPH('TLS_RSA_WITH_AES_128_CBC_SHA256') SSLCAUTH(REQUIRED) DESCR('Channel with tls support')

DEFINE CHANNEL (CONNECTION.TLS) CHLTYPE (CLNTCONN) TRPTYPE (TCP) CONNAME (127.0.0.1) QMNAME (QMTLS) SSLCIPH('TLS_RSA_WITH_AES_128_CBC_SHA256') MAXMSGL (104857600) DESCR ('Client connection to Server')
exit

cd C:\ProgramData\IBM\MQ\qmgrs\QMTLS\ssl

"C:\Program Files\IBM\MQ\bin64\runmqakm.exe" -keydb -create -db key.kdb -pw passw0rd -stash

"C:\Program Files\IBM\MQ\bin64\runmqakm.exe" -cert -create -db key.kdb -label ibmwebspheremqqmtls -stashed -size 2048 -sigalg SHA256WithRSA -dn CN=QMTLS -fips -ca false

"C:\Program Files\IBM\MQ\bin64\runmqakm.exe" -cert -extract -db key.kdb -label ibmwebspheremqqmtls -target qmtls.arm -stashed

mkdir jks
cd jks

"C:\Program Files\IBM\MQ\java\jre\bin\keytool.exe" -genkey -alias ibmwebspheremquser -keyalg RSA -sigalg SHA256withRSA -dname "cn=user@example.com,C=US" -keystore userkey.jks -storetype jks -storepass passw0rd -keypass passw0rd -validity 365 -keysize 2048

"C:\Program Files\IBM\MQ\java\jre\bin\keytool.exe" -export -keystore userkey.jks -alias ibmwebspheremquser -storepass passw0rd -file userkey.arm -rfc

cd ..
copy jks\userkey.arm userkey.arm

"C:\Program Files\IBM\MQ\bin64\runmqakm.exe" -cert -add -db key.kdb -stashed -file userkey.arm -label userkey -trust enable -fips

copy qmtls.arm jks\qmtls.arm
cd jks

"C:\Program Files\IBM\MQ\java\jre\bin\keytool.exe" -import -alias QMTLS -file qmtls.arm -storepass passw0rd -keystore userkey.jks

"C:\Program Files\IBM\MQ\bin64\runmqsc.exe" QMTLS

SET CHLAUTH('CONNECTION.TLS') TYPE(BLOCKUSER) USERLIST('*NOACCESS') DESCR('allow access to tls') WARN(NO) ACTION(ADD) 

refresh security type(ssl)

exit
当我尝试使用channel CONNECTION.TLS和userkey.jks密钥库直接连接到队列管理器时,我收到一个错误消息AMQ4199:

Queue manager QMTLS is not available for client connection due to an SSL configuration error. (AMQ4199)
Queue manager QMTLS is not available for client connection due to an SSL configuration error. (AMQ4199)
Severity: 30 (Severe Error)
Explanation: The user is trying to connect to a remote queue manager using a secure connection.
Response: Check the SSL configuration of the target queue manager and the local SSL trust store.

您是否尝试过运行可在
C:\Program Files\IBM\MQ\samp\bin
中找到的TLS示例
amqsslc
?可以在这里找到运行说明-我看到您已经定义了一个CLNTCONN通道,因此您正在使用CCDT为您的客户机应用程序提供所需的详细信息。请更新您的问题,说明您是如何将CCDT提供给您的应用程序使用的。虽然您描述的错误是MQ Explorer错误,但您没有说明您的应用程序是什么,因此我假设(也许您可以确认)您的客户端应用程序实际上是MQ Explorer。实际上,您使用术语“直接连接”到队列管理器这一事实表明您选择了选项“直接连接”在MQ资源管理器的“添加远程队列管理器”对话框上?如果是这样,那么您就不会使用您设置的CCDT,因为这将是下一个选项“使用客户端通道定义表连接”。无论哪种方式,请向我们展示您为客户端应用程序所做的设置,即您如何告诉它使用channel CONNECTION.TLS,因为我怀疑这就是您的问题所在。@MoragHughson是的。我正在使用MQ资源管理器。稍后我将使用.NET应用程序,但首先我需要检查连接是否正常工作,所以在我看来,测试连接的最简单方法是mq explorer。这是我使用的程序。我试图添加远程队列管理器。在队列管理器名称字段中,我输入了QMTLS,然后填写了ip地址和端口号字段,并输入了CONNECTION.TLS作为服务器连接通道。此外,我还启用了ssl密钥存储库,并添加了可信证书存储和个人证书存储(userkey.jks)。@MoragHughson我没有使用CLNTCONN连接到队列管理器,这是让mq explorer工作的尝试之一。