Java客户端连接单向SSL MQ队列管理器报MQJE001错误码2400如何解决
连接时抛出异常:
Exception in connectioncom.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2400'。尝试使用Java客户端连接采用单向SSL认证的MQ队列管理器,即便已按照各类博客提及的所有步骤操作,仍然触发上述错误。使用的Java代码如下:
错误原因定位
上述报错对应的官方错误码为MQRC_UNSUPPORTED_CIPHER_SUITE,核心触发原因是Java客户端指定的SSL/TLS密码套件,与MQ队列管理器SVRCONN通道配置的密码套件不匹配,或者当前JRE环境不支持指定的密码套件。
解决排查步骤
- 校验密码套件命名映射:IBM MQ服务端的密码套件命名规则,和Oracle JDK/OpenJDK的标准TLS套件命名存在差异,比如MQ侧配置的
TLS_RSA_WITH_AES_256_CBC_SHA256,对应Oracle JDK的配置值为SSL_RSA_WITH_AES_256_CBC_SHA256,只有使用IBM JDK时,客户端配置的套件名才和MQ服务端命名完全一致,需要先确认使用的JDK厂商,匹配正确的套件名。 - 检查JRE加密权限:如果使用256位强度的AES加密套件,需要确保JRE已开启无限制加密权限。Oracle JDK 8u161及以上版本默认已开启该权限,低于该版本需要手动替换
jre/lib/security目录下的local_policy.jar和US_export_policy.jar两个策略文件。 - 校验代码配置:检查代码中
WMQConstants.WMQ_SSL_CIPHER_SUITE参数的赋值是否和匹配后的JDK套件名完全一致,注意大小写必须完全匹配。 - 新版本客户端适配:如果使用9.2及以上版本的IBM MQ客户端,可添加JVM启动参数
-Dcom.ibm.mq.cfg.useIBMCipherMappings=false,强制使用Oracle/OpenJDK标准密码套件命名,无需额外做名称映射转换。
内容的提问来源于stack exchange,提问作者JMeter_User
相关产品推荐
相关产品推荐


