Java的连接到WMQ 8(Java connection to WMQ 8)

2019-09-27 11:24发布

我试图让现有的Java应用程序连接到WebSphere MQ 8.这与Java和WMQ的其他版本在过去的工作,但与Java 8和WMQ8,这并不想要的工作。 我正进入(状态:

handling exception: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
SEND TLSv1.2 ALERT:  fatal, description = handshake_failure
WRITE: TLSv1.2 Alert, length = 2
called closeSocket()
Exception in thread "main" com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2397'.

我只是不明白这是为什么发生。 我已经设置了不同的javax.net.ssl参数。 我用适当的SSL_TRUSTSTORE和密钥库,我已经建立。 有SSL_CIPHERSUITE。

我曾尝试(几乎)所有WMQ支持文件的密码组; 我在整个列表我的工作,与设置和环境是这样的:

  1. JAVA SSL_CIPHERSUITE = SSL_RSA_WITH_AES_256_CBC_SHA
  2. WMQ通道SSL_CIPHERSUITE = TLS_RSA_WITH_AES_256_CBC_SHA
  3. MQ客户端7.0.0.1 - 我曾尝试切换到MQ客户端8,没有改善
  4. IBM的WebSphere MQ,版本:8.0.0.5
  5. 没有在AMQERR01.LOG对应于客户端错误
  6. 甲骨文爪哇8(Java(注册商标)SE运行时环境(建立1.8.0_60-B27)) - 用的SSLv3启用(改变jdk.tls.disabledAlgorithms = RC4,DH密钥大小<768)

附加信息:

  • 客户(银行)正在使用MQ 7,所以我没有在这个问题上选择哪种QM他们使用。 但是,我一直与MQ 8本地测试,以检查是否这是问题的一部分。
  • 我已经试过:-Dcom.ibm.mq.cfg.useIBMCipherMappings = FALSE
  • 从Oracle使用JCE无限强度权限策略文件。

Answer 1:

MQ V7.0发布2008年6月27日(修订包7.0.0.1是有关2009年1月20日),并自2015年9月30日(超过15岁)已经出了支持。 是每个我的回答这个版本的MQ下面将不支持在甲骨文JRE TLS密码套件,而你可以升级到新版的补丁包,我强烈建议你移动到MQ客户端支持的版本。 较新的MQ客户端版本可以连接到旧的MQ队列管理器。 你可以下载一个java只有在以下链接9.0 jar文件MQ 8.0或MQ的安装:

  • IBM MQ V8.0客户端
  • IBM MQ V9.0客户端

APAR IV66840增加了新的功能,允许非IBM的Java运行时环境的用户使用TLS密码组。

对于V7.0,这是包含在修订包7.0.1.13(注意,修订包7.0.1.14是最后的这个版本)。

对于8.0,这是包含在修订包8.0.0.2。

注:此APAR是一个客户端修复程序。

要启用这个选项,你需要做到以下几点:

为了使非IBM运行时环境,这些非默认映射,以下Java系统属性:

com.ibm.mq.cfg.useIBMCipherMappings

必须设置的值:

false

例如,这可以通过使用JVM参数进行配置:

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

然后,您就需要指定的密文作为TLS_RSA_WITH_AES_256_CBC_SHA了甲骨文的JRE,注意SSL_RSA_WITH_AES_256_CBC_SHA是IBM JRE的密文的名字。


让过去的上面,你可以再碰上得到一个AMQ9771,2393 SSL初始化错误后。

一页答案发布“ 为什么我从MQ的Java / JMS应用程序中获得AMQ9771,2393 SSL初始化错误尝试使用TLS AES 256加密什么时候? ”。 它指出以下几点:

在这种情况下,该问题是由试图使用AES 256强加密算法造成的。

大多数Java JRE中,包括Oracle / Sun和IBM的对加密算法进口限制启用。 这限制了最大的密钥大小,还有一些算法。

当试图使用AES 256加密,如ECDHE_RSA_AES_256_CBC_SHA384或TLS_RSA_WITH_AES_256_CBC_SHA256与MQ的Java / JMS应用程序,你需要确保你的JRE支持此密码。 在大多数情况下,需要较强的加密算法的时候,如AES 256个密码中,JCE无限强度仲裁策略文件必须获得并且安装在JDK / JRE。

对于Oracle 1.7:这是JDK / JRE文件中指出:

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

以上到oracle网站状态的链接:

如果需要更强的算法(例如,AES 256位密钥),则JCE无限强度仲裁策略文件必须获得并且安装在JDK / JRE。

这是用户的责任,以确认这一行动是根据当地法规允许的。

如果你得到了2393按照上面的提醒,以获取并安装JCE无限制强度仲裁策略文件



Answer 2:

你有没有阅读此页: https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q113220_.htm

您使用的是过时的密文?



文章来源: Java connection to WMQ 8
标签: java ibm-mq