1

別の質問を投稿しましたが、最初に達成したことを何とかできたので、今は編集しています。「SSLの使用方法」を使用して、SSL接続を受け入れるActiveMQブローカーをセットアップし、通信をテストするためのクライアントを実装しようとしました。システムプロパティを設定することでこれを実行できることがわかりました。

static {
    System.setProperty("javax.net.ssl.keyStore", "/home/amq/SSL/client.ks");
    System.setProperty("javax.net.ssl.keyStorePassword", "password");
    System.setProperty("javax.net.ssl.trustStore", "/home/amq/SSL/client.ts");
}

私が抱えていた問題は、キーストア/トラストストアの作成とブローカー証明書のエクスポートにありました。.ksファイルと.tsファイルを削除し、「SSLの使用方法」で説明されているようにすべてをやり直したところ、機能しました。

私の新しい質問は、クライアントのキーストアを作成したり、ブローカーの証明書をインポートしたりせずに、どうすれば接続を確立できるかということです。

ブローカーから送られてきた証明書を受け入れる方法を探しています。このリンクで、URIオプションを設定する方法を見つけました。

ssl://localhost:61617?transport.acceptInvalidBrokerCert=true

しかし、それは私にとってはうまくいきません。URIまたはURL文字列に「?transport.acceptInvalidBrokerCert = true」を追加した瞬間から、メソッドは機能しなくなり、接続を確立できなくなります。

ブローカーの証明書をインポートせずに、つまり無効な証明書を受け入れることなく、SSLを使用してActiveMQブローカーに接続するJavaまたはC ++クライアントの例を誰かに教えてもらえますか?

4

1 に答える 1

1

参照しているURIフラグは、NMS.ActiveMQを使用する.NETクライアントに対してのみ有効です。C++およびJavaクライアントにはこの設定がありません。C ++クライアントにはこれを行う方法があります。接続を作成する前に、次のようにシステムプロパティを設定する必要があります。

System::getProperty("decaf.net.ssl.disablePeerVerification", "false" );

これらのテストオプションなしでssl証明書を機能させる最も簡単な方法は、ルート証明書を作成してから、ルート証明書を使用してブローカー証明書を作成し、ルート証明書をクライアントのトラストストアに追加することです。証明書は信頼されます。

于 2012-05-10T21:23:48.667 に答える