1

クライアント認証メカニズム (TLS) を使用して SSL プロトコルをリッスンする組み込み ActiveMQ ブローカーを作成したいと考えています。

そうすることを期待する私のコードは次のとおりです。

//loading keystore from file    
KeyStore keystore = KeyStore.getInstance("pkcs12");

File ksfile = new File("/home/me/client1.pkcs12");
FileInputStream ksfis = new FileInputStream(ksfile);

keystore.load(ksfis, "password".toCharArray());

//loading truststore from file
KeyStore truststore = KeyStore.getInstance("jks");
truststore.load(new FileInputStream(new File("/home/me/client1.truststore")), "password"
                .toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
        .getDefaultAlgorithm());
kmf.init(keystore, "password".toCharArray());

TrustManagerFactory tmf = TrustManagerFactory
        .getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(truststore);

//broker definition
String cfURI = "ssl://localhost:2032";
BrokerService brokerService = new BrokerService();
brokerService.addConnector(cfURI);

//configure ssl context for the broker
SslContext sslContext = new SslContext(kmf.getKeyManagers(),tmf.getTrustManagers(), null);

//need client authentication
sslContext.getSSLContext().getDefaultSSLParameters().setNeedClientAuth(true);
sslContext.getSSLContext().getDefaultSSLParameters().setWantClientAuth(true);

brokerService.setSslContext(sslContext);
brokerService.start();

メイン プログラムで前のコードを実行すると、次のエラーが発生します。

GRAVE: Could not accept connection : javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.

どんな提案でも大歓迎です!

読んでくれてありがとう。

4

2 に答える 2

1

クライアントはブローカーからの証明書をトラストストアに設定しましたか? それがあなたが直面している問題だと思います。

それ以外に、クライアントコードも貼り付けるとおそらく役立つでしょう

于 2013-05-06T13:29:33.180 に答える
0

クライアントからの接続時に ActiveMQSslConnectionFactory の代わりに ActiveMQConnectionFactory を使用すると、このエラーが発生しました

于 2012-07-13T10:39:31.413 に答える