|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Unable to Conenct to QMGR with SSL enabled |
« View previous topic :: View next topic » |
Author |
Message
|
gyadavil |
Posted: Wed Apr 25, 2007 7:58 pm Post subject: Unable to Conenct to QMGR with SSL enabled |
|
|
Acolyte
Joined: 01 Feb 2005 Posts: 62
|
====My Apologies for posting the same question in other forum. By mistake I submitted my question there =====================
Hello
I am getting the following error when I try to connect to QMGR once we enabled the SSL.
main, handling exception: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: unable to find valid certification path to requested target
Following tasks has been performed.
1. Created Key repository under
/var/mqm/qmgrs/qmgr/ssl/key.kdb
2. Set the property SSLKEYR(/var/mqm/qmgrs/SWGMQ07DEV/ssl/DSW_SWGMQ07DEVKeystore)
3. Created one self signed certificate on server
4. Extracted self signed certificate
5. Set the channel property CipherSpec and SSLCAUTH
SSLCAUTH(OPTIONAL) SSLCIPH(RC4_MD5_US)
Client Side
1. Created a jks key db
2. Added the self signed certificated created on server side
3. execute the program with following code in place
MQQueueConnectionFactory mqcf = new MQQueueConnectionFactory();
mqcf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
mqcf.setHostName("swgmq07.rochny.ibm.com");
mqcf.setPort(1415);
mqcf.setChannel("CSDW.SVRCONN");
mqcf.setQueueManager("SWGMQ07DEV");
System.setProperty("javax.net.ssl.trustStore","C:\\IBM\\SSL\\gowri_jks.jks");
System.setProperty("javax.net.ssl.trustStorePassword","password");
System.setProperty("javax.net.ssl.keyStore","C:\\IBM\\SSL\\gowri_jks.jks");
System.out.println("before key password");
mqcf.setSSLCipherSuite("SSL_RSA_WITH_RC4_128_MD5");
Can someone help me out what is missing here.
===
I figured out the qm setting for key repo is pointing to wrong location.
I corrected it but I am getting the following error
AMQ9631
There is a mismatch between the CipherSpecs on the local and remote ends of
channel 'CSDW.SVRCONN'. The channel will not run until this mismatch is
resolved. The CipherSpec required in the local channel definition is
'RC4_MD5_US'. The name of the CipherSpec negotiated during the SSL handshake is
'RC4_MD5_US'. A code is displayed if the name of the negotiated CipherSpec
cannot be determined.
But I have CipherSuite on Channel is set to RC4_MD5_US
and my java program uses
mqcf.setSSLCipherSuite("SSL_RSA_WITH_RC4_128_MD5");
as per the docs. Not sure why I am getting this error
====================
main, WRITE: SSLv3 Handshake, length = 45
main, received EOFException: error
main, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
main, SEND TLSv1 ALERT: fatal, description = handshake_failure
main, WRITE: TLSv1 Alert, length = 2
main, called closeSocket()
null
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'swgmq07.rochny.ibm.com:SWGMQ07DEV'
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:586)
at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2110)
at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1532)
at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:150)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:185)
at Test.main(Test.java:49)
MQJE001: Completion Code 2, Reason 2397
============================== |
|
Back to top |
|
 |
marcin.kasinski |
Posted: Wed Apr 25, 2007 10:35 pm Post subject: Re: Unable to Conenct to QMGR with SSL enabled |
|
|
Sentinel
Joined: 21 Dec 2004 Posts: 850 Location: Poland / Warsaw
|
gyadavil wrote: |
But I have CipherSuite on Channel is set to RC4_MD5_US
and my java program uses
mqcf.setSSLCipherSuite("SSL_RSA_WITH_RC4_128_MD5");
as per the docs. Not sure why I am getting this error
|
First thing :
CipherSuite on both sides should be the same. _________________ Marcin |
|
Back to top |
|
 |
BenR |
Posted: Wed Apr 25, 2007 10:53 pm Post subject: |
|
|
Acolyte
Joined: 31 Jan 2006 Posts: 60 Location: Hursley, UK
|
|
Back to top |
|
 |
gyadavil |
Posted: Thu Apr 26, 2007 11:17 am Post subject: |
|
|
Acolyte
Joined: 01 Feb 2005 Posts: 62
|
[quote="BenR"]Have you tried this
http://www-128.ibm.com/developerworks/websphere/library/techarticles/0510_fehners/0510_fehners.html[/quote]
Yes. But still the error message is same
main, WRITE: SSLv3 Handshake, length = 45
main, received EOFException: error
main, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
main, SEND TLSv1 ALERT: fatal, description = handshake_failure
main, WRITE: TLSv1 Alert, length = 2
main, called closeSocket()
null
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'swgmq07.rochny.ibm.com:SWGMQ07DEV'
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:586)
at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2110)
at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1532)
at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:150)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:185)
at Test.main(Test.java:53)
MQJE001: Completion Code 2, Reason 2397
My key database on server is of type cms and here we are trying to create a jks. Does it matter ?? |
|
Back to top |
|
 |
gyadavil |
Posted: Thu Apr 26, 2007 11:19 am Post subject: Re: Unable to Conenct to QMGR with SSL enabled |
|
|
Acolyte
Joined: 01 Feb 2005 Posts: 62
|
[quote="marcin.kasinski"][quote="gyadavil"]
But I have CipherSuite on Channel is set to RC4_MD5_US
and my java program uses
mqcf.setSSLCipherSuite("SSL_RSA_WITH_RC4_128_MD5");
as per the docs. Not sure why I am getting this error
[/quote]
First thing :
CipherSuite on both sides should be the same.[/quote]
CipherSpec Equivalent CipherSuite
NULL_MD5 SSL_RSA_WITH_NULL_MD5
NULL_SHA SSL_RSA_WITH_NULL_SHA
RC4_MD5_EXPORT SSL_RSA_EXPORT_WITH_RC4_40_MD5
RC4_MD5_US SSL_RSA_WITH_RC4_128_MD5
I have the correct matching cipherspec in my program and in the channel. |
|
Back to top |
|
 |
marcin.kasinski |
Posted: Thu Apr 26, 2007 11:21 am Post subject: |
|
|
Sentinel
Joined: 21 Dec 2004 Posts: 850 Location: Poland / Warsaw
|
Please show your new code and MQ logs. _________________ Marcin |
|
Back to top |
|
 |
gyadavil |
Posted: Thu Apr 26, 2007 1:07 pm Post subject: |
|
|
Acolyte
Joined: 01 Feb 2005 Posts: 62
|
[quote="marcin.kasinski"]Please show your new code and MQ logs.[/quote]
MQ Log
==========
04/26/07 15:15:07 - Process(75832.1) User(mqm) Program(amqcrsta_nd)
AMQ9660: SSL key repository: password stash file absent or unusable.
EXPLANATION:
The SSL key repository cannot be used because MQ cannot obtain a password to
access it. Reasons giving rise to this error include:
(a) the key database file and password stash file are not present in the
location configured for the key repository,
(b) the key database file exists in the correct place but that no password
stash file has been created for it,
(c) the files are present in the correct place but the userid under which MQ is
running does not have permission to read them,
(d) one or both of the files are corrupt.
The channel is '????'; in some cases its name cannot be determined and so is
shown as '????'. The channel did not start.
ACTION:
Ensure that the key repository variable is set to where the key database file
is. Ensure that a password stash file has been associated with the key database
file in the same directory, and that the userid under which MQ is running has
read access to both files. If both are already present and readable in the
correct place, delete and recreate them. Restart the channel.
====================
04/26/07 14:04:24 - Process(61214.1) User(mqm) Program(runmqchl_nd)
AMQ9001: Channel 'SWGMQ07DEV.SWGMQ07QM' ended normally.
EXPLANATION:
Channel 'SWGMQ07DEV.SWGMQ07QM' ended normally.
ACTION:
None.
====================
04/26/07 02:28:09 - Process(81434.1) User(mqm) Program(amqcrsta_nd)
AMQ9639: Remote channel 'CSDW.SVRCONN' did not specify a CipherSpec.
EXPLANATION:
Remote channel 'CSDW.SVRCONN' did not specify a CipherSpec when the local
channel expected one to be specified. The channel did not start.
ACTION:
Change the remote channel 'CSDW.SVRCONN' to specify a CipherSpec so that both
ends of the channel have matching CipherSpecs.
====================Channel
RMQSC >DISPLAY CHANNEL (CSDW.SVRCONN)
1 : DISPLAY CHANNEL (CSDW.SVRCONN)
AMQ8414: Display Channel details.
CHANNEL(CSDW.SVRCONN) CHLTYPE(SVRCONN)
ALTDATE(2007-04-26) ALTTIME(00.58.2
COMPHDR(NONE) COMPMSG(NONE)
DESCR( ) HBINT(300)
KAINT(AUTO) MAXMSGL(104857600)
MCAUSER(purnimak) MONCHL(OFF)
RCVDATA( ) RCVEXIT( )
SCYDATA( ) SCYEXIT( )
SENDDATA( ) SENDEXIT( )
SSLCAUTH(OPTIONAL) SSLCIPH(RC4_MD5_US)
SSLPEER(CN=DSW Middleware,O=IBM,OU=GeT,C=US)
TRPTYPE(TCP)
=====================Queue Manager
RMQSC >dis qmgr
2 : dis qmgr
AMQ8408: Display Queue Manager details.
QMNAME(SWGMQ07DEV) ACCTCONO(DISABLED)
ACCTINT(1800) ACCTMQI(OFF)
ACCTQ(OFF) ACTIVREC(MSG)
ALTDATE(2007-04-26) ALTTIME(11.22.15)
AUTHOREV(DISABLED) CCSID(1208)
CHAD(DISABLED) CHADEV(DISABLED)
CHADEXIT( ) CHLEV(ENABLED)
CLWLDATA( ) CLWLEXIT( )
CLWLLEN(100) CLWLMRUC(999999999)
CLWLUSEQ(LOCAL) CMDLEVEL(600)
COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE) CRDATE(2006-03-17)
CRTIME(10.26.29) DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
DEFXMITQ( ) DESCR( )
DISTL(YES) INHIBTEV(DISABLED)
IPADDRV(IPV4) LOCALEV(DISABLED)
LOGGEREV(DISABLED) MAXHANDS(256)
MAXMSGL(104857600) MAXPRTY(9)
MAXUMSGS(10000) MONACLS(QMGR)
MONCHL(OFF) MONQ(OFF)
PERFMEV(DISABLED) PLATFORM(UNIX)
QMID(SWGMQ07DEV_2006-03-17_10.26.29) REMOTEEV(DISABLED)
REPOS( ) REPOSNL( )
ROUTEREC(MSG) SCHINIT(QMGR)
SCMDSERV(MANUAL) SSLCRLNL( )
SSLCRYP( ) SSLEV(ENABLED)
SSLFIPS(NO)
SSLKEYR(/var/mqm/qmgrs/SWGMQ07DEV/ssl)
SSLRKEYC(0) STATACLS(QMGR)
STATCHL(OFF) STATINT(1800)
STATMQI(OFF) STATQ(OFF)
STRSTPEV(ENABLED) SYNCPT
TRIGINT(999999999)
=====================Key repo directory
@swgmq07:/var/mqm/qmgrs/SWGMQ07DEV/ssl/> ls -ltr
total 280
-rwxr-xr-x 1 mqm mqm 129 Apr 18 17:38 DSW_SWGMQ07DEVKeystore.sth
-rwxr-xr-x 1 mqm mqm 756 Apr 23 16:56 cert_csdw.arm
-rwxr-xr-x 1 mqm mqm 80 Apr 25 17:45 DSW_SWGMQ07DEVKeystore.rdb
-rwxr-xr-x 1 mqm mqm 125080 Apr 25 17:45 DSW_SWGMQ07DEVKeystore.kdb
-rwxr-xr-x 1 mqm mqm 80 Apr 25 17:45 DSW_SWGMQ07DEVKeystore.crl
=====================
My Code
import com.ibm.mq.jms.*;
import javax.jms.*;
import com.ibm.jsse.IBMJSSEProvider;
import java.security.*;
public class Test {
public static void main(String[] args) {
MQQueueConnectionFactory mqcf = new MQQueueConnectionFactory();
try {
mqcf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
mqcf.setHostName("swgmq07.rochny.ibm.com");
mqcf.setPort(1415);
mqcf.setChannel("CSDW.SVRCONN");
mqcf.setQueueManager("SWGMQ07DEV");
System.out.println("Initializing SSL...");
System.setProperty("javax.net.ssl.trustStore","C:\\IBM\\SSL\\trustStore.jks");
System.setProperty("javax.net.ssl.trustStorePassword","password");
System.out.println("Before keystore");
System.setProperty("java.protocol.handler.pkgs", "com.ibm.net.ssl.internal.www.protocol");
Security.addProvider(new IBMJSSEProvider());
System.out.println("before cipher suite..."+System.getProperty("javax.net.ssl.keyStore"));
mqcf.setSSLFipsRequired(false);
mqcf.setSSLCipherSuite("SSL_RSA_WITH_RC4_128_MD5");
QueueConnection mqqc = mqcf.createQueueConnection("test","testing");
System.out.println("After Queue Connection");
mqqc.start();
QueueSession session = null;
session = mqqc.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
javax.jms.Queue queue = session.createQueue("PUBSUB.PUB.QUEUE");
TextMessage outMessage = session.createTextMessage();
outMessage.setText("This is a test message");
QueueSender queueSender = session.createSender(queue);
queueSender.send(outMessage);
mqqc.stop();
System.out.println("End of Program");
}
catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.getCause());
System.err.println(e.getLinkedException().getMessage());
}
catch (Exception x) {
System.out.println(x.getCause());
}
}
} |
|
Back to top |
|
 |
marcin.kasinski |
Posted: Thu Apr 26, 2007 10:14 pm Post subject: |
|
|
Sentinel
Joined: 21 Dec 2004 Posts: 850 Location: Poland / Warsaw
|
First think I see is that you should change QMGR SSLKEYR.
It points to keystore file without extension.
gyadavil wrote: |
RMQSC >dis qmgr
2 : dis qmgr
AMQ8408: Display Queue Manager details.
QMNAME(SWGMQ07DEV) ACCTCONO(DISABLED)
ACCTINT(1800) ACCTMQI(OFF)
ACCTQ(OFF) ACTIVREC(MSG)
ALTDATE(2007-04-26) ALTTIME(11.22.15)
AUTHOREV(DISABLED) CCSID(1208)
CHAD(DISABLED) CHADEV(DISABLED)
CHADEXIT( ) CHLEV(ENABLED)
CLWLDATA( ) CLWLEXIT( )
CLWLLEN(100) CLWLMRUC(999999999)
CLWLUSEQ(LOCAL) CMDLEVEL(600)
COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE) CRDATE(2006-03-17)
CRTIME(10.26.29) DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
DEFXMITQ( ) DESCR( )
DISTL(YES) INHIBTEV(DISABLED)
IPADDRV(IPV4) LOCALEV(DISABLED)
LOGGEREV(DISABLED) MAXHANDS(256)
MAXMSGL(104857600) MAXPRTY(9)
MAXUMSGS(10000) MONACLS(QMGR)
MONCHL(OFF) MONQ(OFF)
PERFMEV(DISABLED) PLATFORM(UNIX)
QMID(SWGMQ07DEV_2006-03-17_10.26.29) REMOTEEV(DISABLED)
REPOS( ) REPOSNL( )
ROUTEREC(MSG) SCHINIT(QMGR)
SCMDSERV(MANUAL) SSLCRLNL( )
SSLCRYP( ) SSLEV(ENABLED)
SSLFIPS(NO)
SSLKEYR(/var/mqm/qmgrs/SWGMQ07DEV/ssl/DSW_SWGMQ07DEVKeystore)
SSLRKEYC(0) STATACLS(QMGR)
STATCHL(OFF) STATINT(1800)
STATMQI(OFF) STATQ(OFF)
STRSTPEV(ENABLED) SYNCPT
TRIGINT(999999999)
|
_________________ Marcin |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|