Fehler beim herstellen einer Verbindung mit Websphere MQ SSL-Kanal über JNDI

Meine JMS-client eine Verbindung zu ein Fehler in WMQ durch JNDI. Die initial context factory ist com.ibm.mq.jms.context.WMQInitialContextFactory.

Derzeit, bei der ein Fehler in WMQ Seite gibt es eine queue-manager namens TestMgr. Unter diesem queue-manager erstellte ich zwei Kanäle. Man ist PLAIN.CHL die nicht geben Sie eine SSL-Cipher-Spec, der andere ist SSL.CHL die konfigurierte SSL-Cipher-Spec mit RC4_MD5_US - und SSL-Authentifizierung mit Optional.

Habe ich einen key-store für den queue-manager mit dem IBM Key Management tool. Der Pfad der Schlüssel-db ist [wmq_home]\qmgrs\TestMgr\ssl\key.

Kanal PLAIN.CHL ich definierte eine queue connection factory wie:

DEF QCF(PlainQCF) QMANAGER(TestMgr) CHANNEL(PLAIN.CHL) HOST(192.168.66.23) PORT(1414)   TRANSPORT(client)

Sowie unter den SSL-Kanal SSL.CHL ich definierte eine queue connection factory wie:

DEF QCF(SSLQCF) QMANAGER(TestMgr) CHANNEL(SSL.CHL) HOST(192.168.66.23) PORT(1414) TRANSPORT(client) SSLCIPHERSUITE(SSL_RSA_WITH_RC4_128_MD5)

Nun ich kann nur Verbindung erstellen mit der PlainQCF. Aber nicht schauen, bis das SSL-queue connection factory aus. Mein code sieht wie folgt aus:

 Hashtable environment = new Hashtable();
    environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.mq.jms.context.WMQInitialContextFactory");
    environment.put(Context.PROVIDER_URL, "192.168.66.23:1414/SSL.CHL");
    Context ctx = new InitialContext( environment );
    QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("SSLQCF");
    qcf.createConnection();
    ....

Fehlen mir einige Kontext-Eigenschaften, wenn man sich die SSL-Fabrik? Und dann fand ich den code auf der Leitung hängen new InitialContext( environment ) für eine lange Zeit, fast 5 Minuten und ich bekam CC=2;RC=2009;AMQ9208... Fehler.

Jeder Vorschlag würde geschätzt werden. Ist es wahr, dass der SSL-Kanal kann nicht angeschlossen werden, JNDI?


@T. Rob, vielen Dank für Ihre Antwort sehr. Aber wir wollen noch verwenden WMQInitialContextFactory, also ich fürchte ich muss noch eine Lösung finden für das.

Ich nur die Verbindung definiert Fabrik zu einer Zeit. Die angezeigte info für die SSL-queue connection factory wie:

InitCtx> DISPLAY QCF(SSLQCF)
ASYNCEXCEPTION(ALL)
CCSID(819)
CHANNEL(SSL.CHL)
CLIENTRECONNECTOPTIONS(ASDEF)
CLIENTRECONNECTTIMEOUT(1800)
COMPHDR(NONE )
COMPMSG(NONE )
CONNECTIONNAMELIST(192.168.66.23(1414))
CONNOPT(STANDARD)
FAILIFQUIESCE(YES)
HOSTNAME(192.168.66.23)
LOCALADDRESS()
MAPNAMESTYLE(STANDARD)
MSGBATCHSZ(10)
MSGRETENTION(YES)
POLLINGINT(5000)
PORT(1414)
PROVIDERVERSION(UNSPECIFIED)
QMANAGER(TestMgr)
RESCANINT(5000)
SENDCHECKCOUNT(0)
SHARECONVALLOWED(YES)
SSLCIPHERSUITE(SSL_RSA_WITH_RC4_128_MD5)
SSLFIPSREQUIRED(NO)
SSLRESETCOUNT(0)
SYNCPOINTALLGETS(NO)
TARGCLIENTMATCHING(YES)
TEMPMODEL(SYSTEM.DEFAULT.MODEL.QUEUE)
TEMPQPREFIX()
TRANSPORT(CLIENT)
USECONNPOOLING(YES)
VERSION(7)
WILDCARDFORMAT(TOPIC_ONLY)

Den JNDI-Anbieter sollte in Ordnung sein, weil ich kann schauen der Ebene connection factory erfolgreich. Auch für meine client-app, die ich extrahiert das Zertifikat von der-Taste speichern, die für MQ-server und importiert es auf den trust store(cacerts) von meinem JRE mit alias-Namen ibmwebspheremqtestmgr.

Sind Sie richtig, mit 2009 Fehler gibt es einige log-Einträge:

=================================================================

4/20/2012 20:24:27 - Process(13768.3) User(MUSR_MQADMIN) Program(amqzmur0.exe)
                      Host(xxxx_host of my MQ) Installation(mqenv)
                      VRMF(7.1.0.0) QMgr(TestMgr)                
AMQ6287: WebSphere MQ V7.1.0.0 (p000-L111019).
EXPLANATION:
WebSphere MQ system information: 
Host Info         :- Windows Server 2003, Build 3790: SP2 (MQ Windows 32-bit) 
Installation      :- C:\IBM\WebSphereMQ (mqenv) 
Version           :- 7.1.0.0 (p000-L111019)
ACTION:
None. 

-------------------------------------------------------------------------------
4/20/2012 20:24:27 - Process(7348.116) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(xxxx_host of my MQ) Installation(mqenv)
                      VRMF(7.1.0.0) QMgr(TestMgr)
AMQ9639: Remote channel 'SSL.CHL' did not specify a CipherSpec.

EXPLANATION:
Remote channel 'SSL.CHL' did not specify a CipherSpec when the local channel
expected one to be specified. 

The remote host is 'xxx_host of my app (192.168.66.25)'. 
The channel did not start.

ACTION:
Change the remote channel 'SSL.CHL' on host 'xxx_host of my app (192.168.66.25)' to
specify a CipherSpec so that both ends of the channel have matching
CipherSpecs.

----- amqcccxa.c : 3817 -------------------------------------------------------
4/20/2012 20:24:27 - Process(7348.116) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(my app host) Installation(mqenv)
                    VRMF(7.1.0.0) QMgr(TestMgr)                    
AMQ9999: Channel 'SSL.CHL' to host 'xxx_host of my app (192.168.66.25)' ended
abnormally.

====================================================================

Habe ich auch einige Verwirrung mit dem error-log. Meine app inszeniert an einer Maschine, die sich von meinem MQ. Aber der log sagt das Change the remote channel 'SSL.CHL' on host 'xxx_host of my app (192.168.66.25)' to
specify a CipherSpec so that both ends of the channel have matching
CipherSpecs.
Wie kann ich den Kanal wechseln-cipher-spec auf meiner app hosten?


updates auf MQEnvironment...

reply die Kommentare.

Den Wert MQEnvironment.sslCipherSuite null ist, so wirft es aus NullPointerExcetpion, wenn ich es die die hashtable env. Aber ich habe versucht, ein anderes environment.put(MQC.SSL_CIPHER_SUITE_PROPERTY, "SSL_RSA_WITH_RC4_128_MD5") und die, die es noch nicht mit 2009 Fehler.

Für JMSAdmin tool, ich hatte mich geändert, die config zu verwenden WMQInitialContextFactory. Die Konfiguration wie(JMSAdmin.config):

INITIAL_CONTEXT_FACTORY=com.ibm.mq.jms.context.WMQInitialContextFactory
PROVIDER_URL=192.168.66.23:1414/SYSTEM.DEF.SVRCONN

Den rest der Konfiguration Blätter als Standard.

Bitte beachten Sie, hier verwende ich die Standard-Kanal - SYSTEM.DEF.SVRCONN also kann ich die Anmeldung an der admin-Konsole. Wenn ich den Kanal wechseln, um die SSL eineSSL.CHL, ich kann auch nicht die Anmeldung an der admin-Konsole. Die Fehler, die hier geschehen ist, nur wie die in meinem client-app.

Weiteren Klärung, in meinem client benutze ich folgende code eine Verbindung herstellen können, schließen Sie qmgr(TestMgr) erfolgreich durch den Kanal SSL.CHL.

   MQConnectionFactory factory = new MQConnectionFactory();
    factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
    factory.setQueueManager("TestMgr");
    factory.setSSLCipherSuite("SSL_RSA_WITH_RC4_128_MD5");
    factory.setPort(1414);
    factory.setHostName("192.168.66.23");
    factory.setChannel("SSL.CHL");

    MQConnection connection = (MQConnection) factory.createConnection();

Und das problem ist jetzt nur, wie du schon gesagt hast, das ist der ursprüngliche Zusammenhang fehlgeschlagen Verbindung zum qmgr durch SSL-Kanal. Die option(use plain channel for initial context and ssl channel for connection factory) Sie funktioniert auch. Aber ich will immer noch wissen wie man die Initiale Kontext mit ssl-Kanal arbeiten. Vielen Dank für Ihre Geduld sehr viel. Die updates werden geschätzt.

Dank

Hallo, siehe bitte meine Antwort weiter unten.
Das einzige, was fehlt, von deinem update ist die Konfiguration, für die ein Fehler in WMQ Ursprünglichen Kontext. Ihre QCF wird deutlich, welche eine cipherspec also, wenn es verwendet wurde und nicht mit der QMgr die Einstellung, die Sie sehen würden, einen anderen Fehler. Die Fehler, die Sie sehen, führt mich zu glauben, dass das ein Fehler in WMQ Erste Kontakt ist auch der Versuch zu hit SSL.CHL. Können Sie nach dieser Konfigurationseinstellungen?
Oh, ich dachte, dass das ein Fehler in WMQ Ersten Rahmen ist gebaut in der ein Fehler in WMQ und natürlich muss der Benutzer nicht konfigurieren, diese Ausgangssituation zusätzlich. Es scheint, dass ich falsch war. Ich werde versuchen, es zu konfigurieren. Wenn möglich, können Sie zeigen Sie mir, wie zu konfigurieren ist ein Fehler in WMQ Ursprünglichen Kontext?
Aktualisierte Antwort unten. Kurz gesagt, die WMQInitialContextFactory so konfiguriert wird, dass SSL-Kanal, aber nicht über die SSL-Konfiguration. Sie müssen verwenden Sie die standard-env-vars setzen die ciphersuite und den Speicherort der keystore. Details finden Sie unten.
Vielen Dank für Ihre update. Ich verstehe sehr für Ihre Antwort. Bitte siehe mein update "updates auf MQEnvironment" folgte auf meine Frage.

InformationsquelleAutor zgcharley | 2012-04-20

Schreibe einen Kommentar