2012-04-29 22 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. 

任何建議都惠康!

感謝您的閱讀。

回答

0

我用ActiveMQConnectionFactory代替ActiveMQSslConnectionFactory從客戶

1

連接貴客戶端設置在其信任經紀人的證書時,這個錯誤?恐怕那是你遇到的問題。

除此之外,如果你粘貼客戶端代碼也可能有幫助