我有一个使用SSL通道工作正常的MQ spring jms应用程序。但是,在应用了最近的一个Java安全补丁之后,应用程序停止了以下错误。
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2397' ('MQRC_JSSE_ERROR').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209) ~[com.ibm.mqjms-7.5.0.0.jar:7.5.0.0 - p000-L120604]
... 45 common frames omitted
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.Handshaker.activate(Handshaker.java:438) ~[na:1.6.0_34]
at sun.security.ssl.SSLSocketImpl.kickstartHandshake(SSLSocketImpl.java:1414) ~[na:1.6.0_34]
我注意到新的java安全文件添加了这一行,导致与MQ的SSL连接失败。
jdk.tls.disabledAlgorithms = SSLv3的
我无法删除此行,因为这是共享环境,我可以选择使用此功能。我正在使用MQQueueConnectionFactory配置并注入到我的spring JMS组件中。
谢谢
答案 0 :(得分:1)
对于必须使其工作(尽快)的反应性支持目的,请在该安全文件中注释/禁用该策略。这将允许Spring应用程序像以前一样继续。
但是你需要通过使用相同密码的TLS版本或移动到新的TLS密码来努力实现永久性修复。
答案 1 :(得分:0)
您需要在队列管理器上的服务器连接通道和客户端上设置适合TLS的匹配SipherSpec。
这应该有助于客户端:
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q113220_.htm
使用MQ Explorer进行QM方面最简单,只需查看连接工厂中指定的服务器连接通道的SSL属性。
答案 2 :(得分:0)
你不能用这个 -
java.security.Security.setProperty("jdk.tls.disabledAlgorithms","")
这一变化是在JDK8中引入的。