2012-04-29 9 views
1

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

はそうすることを期待し、私のコードです:

//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. 

任意の提案はウェルカムです!

読んでいただきありがとうございます。

答えて

1

を接続すると、クライアントがそのトラストストアにブローカーから証明書を設定しているときActiveMQConnectionFactory代わりのActiveMQSslConnectionFactoryを使用することで、このエラーを得ましたか。私はあなたが苦しんでいる問題を恐れている。

それ以外の場合は、クライアントコードも貼り付けると役に立ちます。

関連する問題