2017-03-18 8 views
1

IBM MQ Qmanager와 Java 클라이언트 사이에 SSL 연결을 작성해야합니다. IBM 키 관리 GUI를 사용하여이를 수행하기 위해 QManager에 대해 key.dkb를 작성하고 여기에 자체 서명 된 인증서를 추가했습니다.IBM Websphere Mq 서버 및 Java 클라이언트가 SSL 연결을 생성하도록 구성하십시오.

  1. 그런 다음 해당 인증서의 압축을 풉니 다. (cert.arm)
  2. truststore.jks 파일이 만들어지고 서명자가 인증되었습니다. 이전에 추출한 cert.arm을 추가했습니다.
  3. key.dkb의 경로를 Qmanager-> SSL에두고 적합한 암호 매김을 선택하십시오.
  4. Java 클라이언트에서 truststore.jks에 System.property를 추가했습니다.

프로그램을 실행할 때 예외가 있습니다.

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:203) 
     ... 10 more 
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2397;AMQ9204: Connection to host '127.0.0.1(1414)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2397;AMQ9771: SSL handshake failed. [1=javax.net.ssl.SSLHandshakeException[Remote host closed connection during handshake],3=localhost/127.0.0.1:1414 (localhost),4=SSLSocket.startHandshake,5=default]],3=127.0.0.1(1414),5=RemoteTCPConnection.protocolConnect] 
     at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:2282) 
     at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1294) 
     at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:376) 
     at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:560) 
     at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:345) 
     ... 9 more 
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2397;AMQ9771: SSL handshake failed. [1=javax.net.ssl.SSLHandshakeException[Remote host closed connection during handshake],3=localhost/127.0.0.1:1414 (localhost),4=SSLSocket.startHandshake,5=default] 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1329) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:863) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:409) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:305) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:146) 
     at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1730) 
     ... 13 more 
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:992) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection$6.run(RemoteTCPConnection.java:1298) 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection$6.run(RemoteTCPConnection.java:1290) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1290) 
     ... 18 more 
Caused by: java.io.EOFException: SSL peer shut down incorrectly 
     at sun.security.ssl.InputRecord.read(InputRecord.java:505) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) 
     ... 25 more 

기본적으로 Qmanager에는 trustStore에서 서명 한 인증서가 없습니다. 그래서 나는 selfsigned 인증서 및 truststore을 만드는 동안 뭔가를 놓친 것 같아요.

IBM 키 관리 GUI 도구를 사용하여 Java 클라이언트와의 SSL 연결을 설정하기 위해자가 서명 인증서를 작성할 수 있습니까?

답변

1

은 내가 ibm mq troubleshooting guide

통과하는 문제를 해결할 수 난 그냥 내 Qmanager를 키 저장소 저장소에 mqcertck 명령을 실행하고 key.kdb를 읽기 액세스 권한을하지 않은 발견했다. chmod를 사용하여 읽기 권한을 부여한 후 문제가 해결되었습니다.

+0

일반적으로 키. * 파일은 mqm 사용자 만 키 * 파일을 읽을 수 있도록 600 권한이있는 mqm이 소유해야합니다. 이를 위해서는'chown mqm : mqm key. *'와'chmod 600 key. *'를 사용할 수있다. – JoshMc