我试图获得一个连接到WebSphere MQ 8的现有Java应用程序。过去与其他版本的Java和WMQ一起工作,但对于Java 8和WMQ8,这不希望工作。 我越来越:与WMQ 8的Java连接
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 & KEYSTORE。有一个SSL_CIPHERSUITE。 (几乎)WMQ支持的所有记录的CipherSuites;我在整个列表我的工作,与设置和环境是这样的:
- 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对应于客户端错误
- 甲骨文的Java 8(Java(TM)SE茹n时间环境(建立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 Unlimited强制管辖权限策略文件。
请用以下详细信息更新您的问题:1.您在Java端使用哪种SSL_CIPHERSUITE,2. SVRCONN通道上的SSLCIPH,3.特定MQ客户端版本(例如:8.0.0.6),4.特定MQ服务器版本,5.对应于客户端错误的MQ队列管理器AMQERR01.LOG中的任何错误,以及6.是否使用IBM JRE或Oracle JRE。 MQ的最新版本已弃用SSLv3和一些TLS密码规格,我怀疑这是发生了什么,一旦您更新了所需的详细信息,我就可以回答您的问题。 – JoshMc