尝试从本地计算机上的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>
答案 0 :(得分:5)
有三件事会影响这一点:
如果要使用Oracle JRE,则需要设置-Dcom.ibm.mq.cfg.useIBMCipherMappings=false
,这将允许IBM MQ使用Oracle密码套件名称,如TLS_RSA_WITH_AES_256_CBC_SHA256
Oracle JRE 1.7不支持签名算法SHA224withRSA,并且需要使用Oracle密码套件TLS_RSA_WITH_AES_256_CBC_SHA256
。基于此,您需要转到Oracle JRE 1.8。
您需要获取并安装 JCE Unlimited Strength Jurisdiction Policy Files 才能使用SHA256密码套件。
上述信息在我对另一篇文章“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