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

Waq*_*med 4 ssl weblogic jms 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>
Run Code Online (Sandbox Code Playgroud)

Jos*_*hMc 6

影响此的三件事:

  1. 如果要使用Oracle JRE,则需要进行设置-Dcom.ibm.mq.cfg.useIBMCipherMappings=false,这将允许IBM MQ使用Oracle Cipher Suite名称,例如TLS_RSA_WITH_AES_256_CBC_SHA256

  2. Oracle JRE 1.7不支持签名算法SHA224withRSA,而使用Oracle Cipher Suite则需要使用签名算法SHA224withRSA TLS_RSA_WITH_AES_256_CBC_SHA256。基于此,您将需要使用Oracle JRE 1.8。

  3. 您将需要获取并安装JCE无限强度管辖权策略文件才能使用SHA256密码套件。


我对另一篇文章“ 启用S​​SL的MQ错误 ”的回答中更详细地介绍了上述信息。

  • 只想提一下,设置 `-Dcom.ibm.mq.cfg.useIBMCipherMappings=false` 帮助我使用 OpenJDK-1.8 和 IBM MQ v8 获得 SSL 加密连接。我使用的密码也是“TLS_RSA_WITH_AES_256_CBC_SHA256”,OpenJDK 中的 JSSE 提供程序是 SunJSSE 1.8 版。我没有做任何与 JCE Unlimited Strength Jurisdiction Policy Files 有关的事情。谢谢您的帮助! (4认同)