【问题标题】:An MQException occurred: Completion Code 2, Reason 2400 MQJE011: Socket connection attempt refused发生 MQException:完成代码 2,原因 2400 MQJE011:套接字连接尝试被拒绝
【发布时间】:2016-05-19 10:59:47
【问题描述】:

我编写了一个将消息放入 MQ 的程序。当我没有 SSL 配置时,它工作正常。如果我在 QueueManager 和 Channel 中配置 SSL,总是出现 MQException:完成代码 2,原因 2400 MQJE011:套接字连接尝试被拒绝。尝试使用不同的密码套件 请告知如何解决。

SSL 属性:

com.ibm.mq.MQEnvironment.sslCipherSuite = "TLS_RSA_WITH_AES_256_GCM_SHA384"; 
System.setProperty("javax.net.ssl.trustStore", "D:/keystore/testKS.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "12345678");
System.setProperty("javax.net.ssl.keyStore", "D:/keystore/testKS.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "12345678");

【问题讨论】:

  • SSL 属性:com.ibm.mq.MQEnvironment.sslCipherSuite = "TLS_RSA_WITH_AES_256_GCM_SHA384"; System.setProperty("javax.net.ssl.trustStore", "D:/keystore/testKS.jks"); System.setProperty("javax.net.ssl.trustStorePassword", "12345678"); System.setProperty("javax.net.ssl.keyStore", "D:/keystore/testKS.jks"); System.setProperty("javax.net.ssl.keyStorePassword", "12345678");
  • TLS_RSA_WITH_AES_256_GCM_SHA384 密码仅受 MQ v8.0.0.3 支持。你是那个级别的吗?
  • 是的,我正在使用 MQ 8

标签: java ssl ibm-mq


【解决方案1】:

此答案特定于 Java 代码。

Java JRE,包括 Oracle/Sun 和 IBM 都启用了密码算法的导入限制。这限制了最大密钥大小以及一些算法。

当尝试使用 AES 256 密码时,例如 ECDHE_RSA_AES_256_CBC_SHA384TLS_RSA_WITH_AES_256_CBC_SHA256 ,您需要确保 JRE 支持此密码。在大多数情况下,当需要更强的密码算法时,例如 AES 256 密码,必须获取 JCE Unlimited Strength Jurisdiction Policy Files 并将其安装在 JDK/JRE 中。

JDK/JRE 文档中提到了这一点:对于 Oracle 1.7:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html

对于 IBM JRE:** 使用 AES_256 的密码套件需要安装 JCE Unlimited Strength Jurisdiction Policy Files。

http://www-01.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.security.component.71.doc/security-component/jsse2Docs/ciphersuites.html?lang=en

这类似于 IBM MQ Explorer 中提到的问题:

https://developer.ibm.com/answers/questions/187285/why-is-a-mqrc-ssl-initialization-error-displayed-w.html

请使用 MSPKI 和密码值“TLS_RSA_WITH_AES_256_CBC_SHA”更新此 JAR 文件运行

将支持所有算法的新策略 jar,您需要将 jar 更新到您的 C:\java-8\jdk1_8_0\jre\lib\security

http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

【讨论】:

    【解决方案2】:

    您收到的 MQRC 返回码是一个非常强烈的提示。诊断任何问题的第一步应该是查找 MQRC 编号。您可以在任何安装了 MQ 的机器上的命令提示符下快速执行此操作,方法是键入

    mqrc 2400
    

    您也可以在知识中心查找。

    MQRC_UNSUPPORTED_CIPHER_SUITE (2400)

    如果您阅读上述链接中完整描述原因码的更详细信息,您会发现这意味着 JSSE 不支持该密码。

    @Shashi 在上面的评论中给了你答案,你使用的密码是最近才引入的。

    【讨论】:

    • 谢谢,能够通过支持 java 密码并将其与 MQ 匹配来解决它。
    【解决方案3】:

    就我而言,将以下属性设置为客户端 JVM 会有所帮助:

    -Dcom.ibm.mq.cfg.useIBMCipherMappings=false
    

    这里是官方文档解释它-https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q113210_.htm#q113210___mappings

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多