AMQP 1.0 をキュー ブローカーとしてサポートする ActiveMQ 5.8.0 を使用しています。Qpid AMQP1.0 クライアント jms ライブラリを使用して Java クライアントからこれと通信しようとしていますが、キーストアとトラストストアの情報を指定する方法が見つかりません。
Java VM オプション (-Djavax.net.ssl.keyStore など) を介して SSL 資格情報を渡すことでクライアントを正常に構成しましたが、これは最終的な解決策として受け入れられる方法ではありません...指定できるようにする必要がありますコード内からのこの情報。
現在、createFromURL メソッドを使用して、ここで定義されている SSL パラメーターを含む URL から接続を生成していますが、キーストア情報 (および場合によってはフェイルオーバー パラメーター) が URL から解析されていないようです。
String connectionUrl = "amqps://localhost/?brokerlist='tcp://localhost:5671?ssl='true'&key_store='C:/apache-activemq-5.8.0/conf/client.ks'&key_store_password='password'&trust_store='C:/apache-activemq-5.8.0/conf/client.ts'&trust_store_password='password'";
ConnectionFactoryImpl connectionFactory = ConnectionFactoryImpl.createFromURL(connectionUrl);
セキュリティ情報を接続に提供するより良い方法を知っている人はいますか?
更新: そうですね、API を掘り下げると、ライブラリがデフォルトの SSLSocketFactory を使用することがわかりました
参照: org.apache.qpid.amqp_1_0.client.Connection
final Socket s;
if(ssl)
{
s = SSLSocketFactory.getDefault().createSocket(address, port);
}
したがって、JVM オプション以外でこの情報を指定してデフォルト値を設定する方法はないようです...少なくとも現在のバージョンの Qpid クライアント ライブラリでは。