无法连接WebSphere MQ v7.0.1.14 TLS通道问题求助
问题拆解与解决方案
咱们来直接切入你碰到的这个MQ连接问题——核心症结在于你的MQ客户端版本和JDK版本组合不支持当前使用的密码套件TLS_RSA_WITH_AES_128_CBC_SHA256,下面一步步给你分析和解决:
环境信息梳理
WebSphere & 依赖版本详情
Java(TM) SE Runtime Environment (build pxa6460sr16fp60-20180213_02(SR16 FP60)) IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr16fp60-20180125_377078 (JIT enabled, AOT enabled) J9VM - 20180125_377078 JIT - r9_20180125_377078 GA24_Java6_SR16_20180125_1132_B377078) java version "1.6.0" JCL - 20180209_01 Websphere MQ version : 7.0.1.14 MQ client jar(com.ibm.mq.jar) version : 5.304 - j5304-G030613.1 Application Code is compiled using JDK 1.6_U80
MQ服务端通道配置
AMQ8414: Display Channel details. CHANNEL(MQ.TLS.BFH.CHL) CHLTYPE(SVRCONN) ALTDATE(2017-11-07) ALTTIME(08.35.01) COMPHDR(NONE) COMPMSG(NONE) DESCR(Client channel for BFH WAS Client) SSLCAUTH(REQUIRED) SSLCIPH(TLS_RSA_WITH_AES_128_CBC_SHA256) TRPTYPE(TCP)
错误日志核心分析
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2400' ('MQRC_UNSUPPORTED_CIPHER_SUITE'). at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:223) ... 50 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2400;AMQ9204: Connection to host 'gbrdsr000000542.intranet.barcapint.com(1414)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2400;AMQ9231: The supplied parameter is not valid. [1=TLS_RSA_WITH_AES_128_CBC_SHA256]],3=gbrdsr000000542.intranet.barcapint.com(1414),5=RemoteTCPConnection.chooseSocketFactory] at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:2177) at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1308) at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:373) ... 49 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2400;AMQ9231: The supplied parameter is not valid. [1=TLS_RSA_WITH_AES_128_CBC_SHA256] at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.chooseSocketFactory(RemoteTCPConnection.java:2122) at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.makeSocketSecure(RemoteTCPConnection.java:1933) at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:753) at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1164) at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.connect(RemoteConnection.java:1306) at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:372) at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1734) ... 51 more
关键报错MQRC_UNSUPPORTED_CIPHER_SUITE直接指向:你的客户端环境无法识别TLS_RSA_WITH_AES_128_CBC_SHA256这个密码套件。
根本原因
- MQ客户端版本过于老旧:你使用的
com.ibm.mq.jar是5.304版本(对应MQ Client 5.3 Fix Pack 4),这个版本仅支持TLS 1.0及SHA-1类密码套件,完全不兼容TLS 1.2和SHA-256系列的套件。 - JDK版本的局限性:虽然IBM JDK 1.6 SR16 FP60确实添加了TLS 1.2的支持,但老旧的MQ客户端无法调用JDK的这部分能力,相当于“硬件支持但软件不兼容”。
解决方案
方案1:升级MQ客户端(优先推荐)
- 直接升级到MQ Client 7.1.0.9及以上版本,或者MQ 7.5/8.0的客户端版本——这些版本原生支持TLS 1.2和SHA-256类密码套件。
- 注意:升级时要替换所有相关的MQ客户端jar包(比如
com.ibm.mq.jmqi.jar、com.ibm.mq.headers.jar等),避免版本不一致导致的其他问题。
方案2:更换兼容的密码套件(临时 workaround)
如果暂时无法升级客户端,可以修改MQ服务端通道配置:
- 将通道的
SSLCIPH改为JDK 1.6和MQ Client 5.3支持的TLS 1.0套件,比如TLS_RSA_WITH_AES_128_CBC_SHA(SHA-1版本)。 - 同时在WebSphere的SSL出站配置中,确保启用这个替换后的密码套件,保持两端配置一致。
方案3:确认JVM参数配置(配合方案1使用)
升级客户端后,需要确保WebSphere的JVM参数启用TLS 1.2:
- 添加JVM参数:
-Dcom.ibm.jsse2.overrideDefaultTLS=true和-Dhttps.protocols=TLSv1.2 - 检查WebSphere的SSL配置,确认SSL协议列表包含
TLSv1.2,且密码套件列表包含TLS_RSA_WITH_AES_128_CBC_SHA256。
验证步骤
- 应用修改后,重启WebSphere Application Server。
- 尝试连接MQ,观察是否仍有
MQRC_UNSUPPORTED_CIPHER_SUITE报错。 - 如果使用方案2,务必确认MQ服务端和客户端的密码套件完全匹配。
内容的提问来源于stack exchange,提问作者Vikram Mullick
相关产品推荐
相关产品推荐

