【发布时间】:2020-02-20 16:35:51
【问题描述】:
我正在尝试使用 JMS 输入创建一个 nifi 流,以连接到在 z/OS 上运行的 Websphere MQ。如果队列管理器不受 TLS 保护,我可以使用 JNDI(使用 .bindings 文件)成功连接。切换到安全队列管理器时出现不受支持的密码套件错误:
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2393;AMQ9771: SSL handshake failed. [1=java.lang.IllegalArgumentException[Unsupported ciphersuite SSL_RSA_WITH_AES_256_CBC_SHA256],3=10.24.98.154/10.24.98.154:457 (10.24.98.154),4=SSLSocket.createSocket,5=default]
at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.makeSocketSecure(RemoteTCPConnection.java:2093)
at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:870)
at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1294)
at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:892)
at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:416)
at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:312)
at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:146)
at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1761)
... 40 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unsupported ciphersuite SSL_RSA_WITH_AES_256_CBC_SHA256
at sun.security.ssl.CipherSuite.valueOf(CipherSuite.java:228)
at sun.security.ssl.CipherSuiteList.<init>(CipherSuiteList.java:79)
at sun.security.ssl.SSLSocketImpl.setEnabledCipherSuites(SSLSocketImpl.java:2495)
at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.makeSocketSecure(RemoteTCPConnection.java:2084)
... 47 common frames omitted
我认为问题在于将-Dcom.ibm.mq.cfg.preferTLS=true 变量提供给 nifi 进程。我尝试将其添加到 bootstrap.conf,但没有帮助。
有没有其他方法可以将-Dcom.ibm.mq.cfg.preferTLS=true 变量提供到 ibm jms 客户端 jar 中?我真的坚持这个问题,所以任何帮助都会非常有益。谢谢
【问题讨论】:
-
您运行的是什么 Java 提供程序和版本? jar 文件来自哪个版本的 IBM MQ?您指定的是什么密码套件? SVRCONN 上指定了什么 CIHERSPEC?
-
@JoshMc com.ibm.mq.allclient.jar -> 9.0.4.0 javax.jms-api.jar -> 2.0.1 java 版本 -> 我指定的 jdk1.8.0_161 密码套件 -> TLS_RSA_WITH_AES_256_CBC_SHA256
-
该错误表明您指定了 SSL_RSA_WITH_AES_256_CBC_SHA256。您是否使用 JMSAdmin 创建了绑定文件?
-
@JoshMc 是的,我使用 JMSAdmin 创建了 .bindings 文件,如下所示:“DEF CF(SecureQMan) QMGR(
) HOSTNAME( ) PORT( ) CHANNEL( ) TRANSPORT(CLIENT) SSLCIPHERSUITE(TLS_RSA_WITH_AES_256_CBC_SHA256)" -
请
edit并使用您提供的其他详细信息更新您的问题,正如您从我的回答中看到的那样,这些是确定问题原因的关键。添加这些详细信息后,我会支持您的问题。
标签: jms ibm-mq apache-nifi tls1.2