JMSCMQ0001:IBM MQ调用失败,compcode为'2'('MQCC_FAILED')原因'2400'('MQRC_UNSUPPORTED_CIPHER_SUITE')

时间:2017-05-02 11:40:32

标签: ssl jms weblogic ibm-mq

尝试从本地计算机上的Java客户端与远程MQ建立连接时,出现以下异常:

  

com.ibm.mq.MQException:JMSCMQ0001:IBM MQ调用失败,compcode为'2'('MQCC_FAILED')原因'2400'('MQRC_UNSUPPORTED_CIPHER_SUITE')

这是Java版本1.7,Oralce JRE,密码套件'TLS_RSA_WITH_AES_256_CBC_SHA256'以及以下Maven依赖项:

<dependency>
  <groupId>com.ibm.mq</groupId>
  <artifactId>allclient</artifactId>
  <version>9.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.messaging.mq</groupId>
  <artifactId>fscontext</artifactId>
  <version>4.4.2</version>
</dependency>

2 个答案:

答案 0 :(得分:5)

有三件事会影响这一点:

  1. 如果要使用Oracle JRE,则需要设置-Dcom.ibm.mq.cfg.useIBMCipherMappings=false,这将允许IBM MQ使用Oracle密码套件名称,如TLS_RSA_WITH_AES_256_CBC_SHA256

  2. Oracle JRE 1.7不支持签名算法SHA224withRSA,并且需要使用Oracle密码套件TLS_RSA_WITH_AES_256_CBC_SHA256。基于此,您需要转到Oracle JRE 1.8。

  3. 您需要获取并安装 JCE Unlimited Strength Jurisdiction Policy Files 才能使用SHA256密码套件。

  4. 上述信息在我对另一篇文章“MQ Error on SSL enabled”的回答中有更详细的介绍。

答案 1 :(得分:0)

您还可以尝试以下其他参数:

-Djavax.net.ssl.trustStorePassword=mqpassword -Djavax.net.ssl.keyStorePassword=mqpassword  -Dcom.ibm.mq.cfg.preferTLS=true -Dcom.ibm.mq.cfg.useIBMCipherMappings=false