Connexion à Websphere MQ en Java avec SSL / Keystore
Je tiens à vous connecter à un Websphere 6.0 MQ via Java. J'ai déjà le code de travail pour un "normal" de la file d'attente, mais maintenant, j'ai besoin d'accéder à une nouvelle file d'attente qui est crypté SSL (keystore). J'ai été envoyé un fichier appelé quelque chose.jks, ce qui je suppose est un certificat-je besoin de stocker quelque part. J'ai été chercher sur le net, mais je ne peux pas trouver la bonne information.
C'est le code que j'utilise pour le "normal" de la file d'attente. Je suppose que j'ai besoin de certains biens, mais ne savez pas lequel.
MQQueueConnectionFactory connectionFactory = new MQQueueConnectionFactory();
connectionFactory.setChannel(channel_);
connectionFactory.setHostName(hostname_);
connectionFactory.setPort(port_);
connectionFactory.setQueueManager(queueManager_);
connectionFactory.setTransportType(1);
connectionFactory.setSSsetSSLCertStores(arg0)
Connection connection = connectionFactory.createConnection();
connection.setExceptionListener(this);
session_ = connection.createSession(DEFAULT_TRANSACTED, DEFAULT_ACKMODE);
connection.start();
javax.jms.Queue fQueue = session_.createQueue(queue_);
consumer = session_.createConsumer(fQueue);
source d'informationauteur javaExpert
Vous devez vous connecter pour publier un commentaire.
Alex Fehners tutoriel en developerWorks est un peu vieux (2005), mais a des exemples de code qui devrait fonctionner pour vous.
SSL configuration de Websphere MQ Java/client JMS
Votre application Java s'authentifie l'QMgr basé sur son certificat. Cela signifie que le fichier jks vous a été fourni doit avoir soit le QMgr du certificat auto-signé ou il aura le certificat racine de l'Autorité de certification qui a signé le QMgr du certificat. Dans les deux cas, vous pointez vers le fichier à l'aide de la
-Djavax.net.ssl.trustStore=<location of trustStore>
comme indiqué dans l'article lié ci-dessus. Si le jks a un mot de passe, vous devrez le spécifier-Djavax.net.ssl.trustStorePassword=<password>
. L'authentification de l'QMgr avec un truststore est toujours nécessaire. La partie suivante peut ou peut ne pas être nécessaire.L'autre pièce du puzzle est que le QMgr peuvent exiger de votre application de présenter un certificat. En d'autres termes, la QMgr cert est toujours authentifié, si l'application est requise pour l'authentification est facultatif. Si elle est, alors vous avez ce qui est connu comme "l'authentification mutuelle". Si la chaîne que vous vous connectez à a été configuré avec
SSLCAUTH(REQUIRED)
ensuite mutuelle auth a été activée et le QMgr devez avoir l'application de l'auto-signé cert ou d'une autorité de certification racine cert qui a signé de votre application cert dans son fichier de clés. Espérons que quiconque configurer votre fichier jks l'avez déjà.En supposant mutuelle d'authentification est requis, votre jks aura, en plus de la QMgr de confiance du cert, un organisme privé cert représentant votre application. Pour obtenir l'application pour récupérer le cert et le présenter à la QMgr, vous utilisez le
-Djavax.net.ssl.keyStore=<location of keyStore>
et-Djavax.net.ssl.keyStorePassword=<password>
paramètres. Remarque ces dire clé magasin alors que la précédente parms dit confiance magasin.Ma recommandation est de travailler avec les WMQ administrateur pour configurer et tester la connexion SSL. La première phase devrait être de tester le canal avec
SSLCAUTH(OPTIONAL)
. Il vérifie que l'application peut résoudre et d'authentifier le QMgr du certificat. Seulement lorsque vous obtenez ce travail serait la WMQ admin puis de changer le canal deSSLCAUTH(REQUIRED)
les tests d'authentification dans le sens inverse.Je très vous recommandons d'utiliser le WMQ v7 client pour une nouvelle application. C'est pour deux raisons: 1) v6 est en fin de vie à compter de Septembre 2011; 2) la v7 code a beaucoup plus de capacité de diagnostic intégré. La v7 code du client est totalement compatible avec un v6 QMgr et fonctionne comme le v6 client. Vous venez de ne pas obtenir la v7 fonctionnalité. Télécharger le WMQ client code gratuit ici:
IBM - MQC7: WebSphere MQ V7.0 Clients
Je suis l'exécution du WMQ les Mains Sur la Sécurité en Laboratoire à l'IMPACT de cette année et sera poster les scripts et guide de laboratoire au cours du week-end à http://t-rob.net alors revenez pour que.
À l'aide de SSL à partir de l'Oracle de la JVM (JSSE)
Voir aussi "Ce TLS cipherspecs/ciphersuites sont pris en charge lors de la connexion à partir d'Oracle Java (non-IBM JRE) pour MQ gestionnaire de file d'attente?"
En MQ version du Client 8.0.0.2 il existe un patch est inclus pour utiliser le protocole TLS avec l'Oracle de la JVM, cela fonctionne avec voies réponse ci-dessus
L'obtenir que cela fonctionne, vous aurez besoin de la dernière MQ Client qui contient
IV66840: WMQ V7 JAVA/JMS: AJOUT du SUPPORT POUR SÉLECTIONNÉ TLS CIPHERSPECS QUAND
L'EXÉCUTION DE NON-IBM JAVA RUNTIME ENVIRONNEMENT
http://www-01.ibm.com/support/docview.wss?uid=swg1IV66840
(télécharger)
En fonction de votre emplacement vous pouvez aussi besoin d'installer le
Java Cryptography Extension (JCE) Force Illimitée de la Compétence de la Politique de Fichiers 8 (télécharger)
Pour utiliser ce que vous avez configuré à l'aide de l'argument JVM:
Noter que le défaut de sécurité de mise en œuvre de comportement diffère entre Oracle et IBM Jvm :
La Oracle JSSE guide de Référence dit:
La IBM JSSE guide de Référence dit:
Ce qui signifie que vous avez à l'installation votre propre ssl contexte
Et de l'offre que de la MQ client JMS:
Si vous utilisez un serveur d'application, cela pourrait être géré par votre serveur d'applications.
Essayer ce code avec T. Prive les explications sur le certificat:
Être au courant de ce qui JRE que vous utilisez. Nous avons eu de gros problèmes dans l'utilisation de Sun JDK, en raison d'un certain cryptation (TLS_RSA_WITH_AES_128_CBC_SHA) sur le canal SSL pour IBM MQ. Nous avons utilisé un X509 certeficate. Afin d'obtenir ce travail, nous utilisons IBM JRE parce qu'il a beaucoup plus de soutien pour certaines suites de chiffrement!