我试图让现有的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支持文件的密码组; 我在整个列表我的工作,与设置和环境是这样的:
- JAVA SSL_CIPHERSUITE = SSL_RSA_WITH_AES_256_CBC_SHA
- WMQ通道SSL_CIPHERSUITE = TLS_RSA_WITH_AES_256_CBC_SHA
- MQ客户端7.0.0.1 - 我曾尝试切换到MQ客户端8,没有改善
- IBM的WebSphere MQ,版本:8.0.0.5
- 没有在AMQERR01.LOG对应于客户端错误
- 甲骨文爪哇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无限强度权限策略文件。
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无限制强度仲裁策略文件 。
你有没有阅读此页: https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q113220_.htm
您使用的是过时的密文?