2017-10-10 23 views
-1

私は安全でないチャネルを使用してQManagerへの接続を確立することができ、これまで何をしたいことができました。セキュアキー(公開鍵と秘密鍵)を使用してMQに接続

しかし、私は安全なチャンネルを介して同じQManageに接続しようとしています。私はセキュリティキー(公開キーと秘密キーの両方)をMQサーバーから生成していますが、キーを組み込んでMQ接続を確立する方法がわかりません。

私はグーグルで、以下のアプローチを提案した回答を見つけましたが、うまくいきませんでした。

System.setProperty("javax.net.ssl.trustStore","path to public key"); 
System.setProperty("javax.net.ssl.keyStore","path to private key"); 

例外があります。

com.ibm.mq.MQException : MQJE001: Completion Code '2', Reason '2537'. 

セキュリティキーを使用してQManagerに接続する方法については、いくつかのガイダンスまたはサンプルコードをお読みいただきたいと思います。

@JoshMc -

  1. の下にあなたの質問への答えを見つけてください、あなたはJMS用のJavaまたはIBM MQクラスのためにIBM MQクラスを使用していますか? 私はJava用のIBM MQクラスを使用しています

  2. 使用しているjarファイルはどのバージョンのIBM MQですか?

    バージョン7

  3. あなたがに接続しようとしているキューマネージャは、MQのバージョンは何ですか?

    バージョン8

  4. あなたはMQは、クライアント証明書を検証持つようにしようとしている(SVRCONNチャネル上SSLCAUTHの値を確認してください)

    はい。私は公開鍵と秘密鍵をMQ管理者がMQサーバから生成しました(私はMQサーバへのアクセス権がありません)、MQサーバに接続するためにそれを使用する必要があります。

  5. 接続しようとすると、キュー・マネージャーAMQERR01.LOGに表示されるエラーをペーストします。

私はログファイルにアクセスできません。

以下は作業コードです。 MQEnvironment:私は、セキュアでないチャネルに接続し、メッセージ

公共ボイドMQSenderを(){

MQQueueManager QMgr = null; 

    try { 

    MQEnvironment.hostname = "hostname"; 

    MQEnvironment.channel = "UNSECURE"; 
    //MQEnvironment.channel = "SECURE"; 

    MQEnvironment.port = 8080; 
    QMgr = new MQQueueManager("QManager"); 

     int openOptions = MQConstants.MQOO_OUTPUT; 
     MQQueue queue = QMgr.accessQueue("QNAME",openOptions); 

     MQPutMessageOptions pmo = new MQPutMessageOptions(); 
     pmo.options = MQConstants.MQPMO_LOGICAL_ORDER | MQConstants.MQPMO_SYNCPOINT; 

     MQMessage message = new MQMessage(); 
     message.writeString("TEST"); 
     queue.put(message, pmo); 

    QMgr.commit(); 

    } catch (Exception e) { 

     if(QMgr!=null){ 

    try { 

     QMgr.backout(); 

    } catch (MQException e1) { 

     e1.printStackTrace(); 
    } 
     } 

     e.printStackTrace(); 
    } 

}

+0

質問の下にある[編集]リンクをクリックして詳細を入力してください。 1. IBM MQ Classes for JavaまたはIBM MQ Classes for JMSを使用していますか? 2.使用しているjarファイルは、どのバージョンのIBM MQですか? 3.接続しようとしているキュー・マネージャーのMQのバージョンは何ですか。 4. MQでクライアント証明書を検証しようとしていますか(SVRCONNチャネルでSSLCAUTHの値を確認してください)。5.接続しようとすると、キュー・マネージャーAMQERR01.LOGに表示されるすべてのエラーを貼り付けます。 TLSなしで動作するコードの最小サンプルと、TLSで失敗するコードを提供します。 – JoshMc

+0

@ JoshMc - あなたの質問に対する私の答えを見つけてください。ありがとうございました。 –

+0

特定のバージョンを指定してください。 – JoshMc

答えて

1

あなたはあなたのコードから使用する暗号スイートを指定するオプションが含まれていない送信することができています。 https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q031220_.htm

をと実行します。SSLCIPHERSUITE

この知識センターの記事が役立つかもしれませんJKSの店舗には信頼できる証明書と秘密の証明書/鍵のペアがありますか? これらは、より多くのようにする必要があります:

するSystem.setProperty(「は、javax.net.ssl.trustStore」、「サーバ証明書を検証するために必要な証明書を含むJKSファイルへのパス」);

System.setProperty( "javax.net.ssl.keyStore"、 "証明書とクライアントの秘密鍵を含むJKSファイルへのパス");

関連する問題