MQ异常:MQRC_SSL_PEER_NAME_MISMATCH

时间:2019-06-14 07:52:04

标签: ibm-mq mq

我正在通过SSL连接到MQ消息代理,有时会出现以下异常。奇怪的是,我并不总是遇到此错误,并且重新启动客户端进程通常可以解决问题。

在创建MQConnectionfactory时,我已经将SSLPeername设置为CN = *的值,但这似乎无法解决问题。我也很奇怪,它并不总是发生,而只是不时发生。有人可以帮我吗?

thx和kr,

弗雷德里克。

com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: Failed to connect to queue manager 'UM01' with connection mode '1' and host name 'xxx.xx.net(1449)'.
    at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:585) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.wmq.internal.WMQSession.connect(WMQSession.java:392) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.wmq.internal.WMQSession.<init>(WMQSession.java:301) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.wmq.internal.WMQConnection.createSession(WMQConnection.java:884) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.jms.internal.JmsConnectionImpl.createSession(JmsConnectionImpl.java:594) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.jms.internal.JmsQueueConnectionImpl.createQueueSession(JmsQueueConnectionImpl.java:148) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jms.MQQueueConnection.createQueueSession(MQQueueConnection.java:140) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jms.MQQueueConnection.createSession(MQQueueConnection.java:162) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    at xxxx.server.comm.jms.spring.SingleConnectionFactory.createSession(SingleConnectionFactory.java:521) ~[xxxx.server.comm.jms.jar:na]
    at xxxx.server.comm.jms.spring.CachingConnectionFactory.getSession(CachingConnectionFactory.java:252) ~[xxxx.server.comm.jms.jar:na]
    at xxxx.server.comm.jms.spring.SingleConnectionFactory$SharedConnectionInvocationHandler.invoke(SingleConnectionFactory.java:731) ~[xxxx.server.comm.jms.jar:na]
    at com.sun.proxy.$Proxy23.createSession(Unknown Source) ~[na:na]
    at xxxx.server.comm.jms.JMSSenderImpl.send(JMSSenderImpl.java:93) ~[xxxx.server.comm.jms.jar:na]
    at java.util.TimerThread.mainLoop(Unknown Source) [na:1.8.0_102]
    at java.util.TimerThread.run(Unknown Source) [na:1.8.0_102]
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2398' ('MQRC_SSL_PEER_NAME_MISMATCH').
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    ... 20 common frames omitted
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2398;AMQ9204: Connection to host 'xxx.xxx.net(1449)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2398;AMQ9636: SSL distinguished name does not match peer name, channel '?'. [4=CN=xxxxx]],3=xxx.xxx.net(1449),5=RemoteTCPConnection.protocolConnect]
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:2050) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1223) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:311) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:337) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.msg.client.wmq.internal.WMQSession.connect(WMQSession.java:348) ~[com.ibm.mqjms.jar:7.5.0.1 - p750-001-130308]
    ... 19 common frames omitted
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2398;AMQ9636: SSL distinguished name does not match peer name, channel '?'. [4=CN=xxx]
    at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1219) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:710) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:400) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:299) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:164) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1595) ~[com.ibm.mq.jmqi.jar:7.5.0.1 - p750-001-130308]
    ... 23 common frames omitted

这是我用来建立连接的代码:

            final MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
            factory.setChannel(this.jmsConfig.getChannel());
            factory.setHostName(this.jmsConfig.getHostname());
            factory.setPort(this.jmsConfig.getPort());
            factory.setQueueManager(this.jmsConfig.getQueuemanager());
            factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);

            String sslPeerName = this.jmsConfig.getSslPeerName();
            if (StringUtils.isNotBlank(sslPeerName))
            {
                logger.info("Setting SSL Peername: {} ", sslPeerName);
                factory.setSSLPeerName(sslPeerName);
            }

            String sslCipherSuite = this.jmsConfig.getSslCipherSuite();
            if (StringUtils.isNotBlank(sslCipherSuite))
            {
                logger.info("Setting SSL Cipher Suite: {} ", sslCipherSuite);
                factory.setSSLCipherSuite(sslCipherSuite);
            }
            connection = factory.createConnection();

该异常发生在createSession期间

con.createSession(transacted, ackMode);

0 个答案:

没有答案