ActiveMQ中使用SSL
来源:互联网 发布:python编写登录脚本 编辑:程序博客网 时间:2024/06/06 04:57
一、生成相应的证书文件
1、keytool -genkey -alias broker -keyalg RSA -keystore
2、keytool -export -alias broker -keystore c:/mybroker.ks -file
3、keytool -genkey -alias client -keyalg RSA -keystore c:/myclient.ks
4、keytool -import -alias broker -keystore c:/myclient.ts -file c:/mybroker_cert
把上面生成的文件拷贝到${activemq.base}/conf/目录下
然后将如下配置考到相应的activemq.xml文件中
<transportConnector name="ssl" uri="ssl://localhost:61617"/>
<sslContext keyStore="file:${activemq.base}/conf/mybroker.ks" keyStorePassword="test123" trustStore="file:${activemq.base}/conf/myclient.ts" trustStorePassword="test123"/>
二、编写如下测试类
package org.apache.activemq.book.ch3;
import java.security.KeyStore;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import org.apache.activemq.ActiveMQSslConnectionFactory;
import org.apache.activemq.book.ch2.portfolio.Listener;
public class SSLConsumer {
private static transient ActiveMQSslConnectionFactory factory;
private transient Connection connection;
private transient Session session;
// keystore client path
private String keyStore = "myclient.ks";
// truststore client path
private String trustStore = "myclient.ts";
private String keyStorePassword = "test123";
private String url = "ssl://localhost:61617";
public SSLConsumer() throws Exception {
// 实例化 ActiveMQSslConnectionFactory
factory = new ActiveMQSslConnectionFactory();
factory.setBrokerURL(url);
factory.setKeyAndTrustManagers(getKeyManagers(keyStore,
keyStorePassword), getTrustManagers(trustStore),
new java.security.SecureRandom());
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
}
public void close() throws JMSException {
if (connection != null) {
connection.close();
}
}
public static void main(String[] args) throws Exception {
// define connection URI
SSLConsumer consumer = new SSLConsumer();
// extract topics from the rest of arguments
String[] topics = new String[]{"JAVA","IONA"};
//System.arraycopy(args, 1, topics, 0, args.length - 1);
for (String stock : topics) {
Destination destination = consumer.getSession().createTopic(
"STOCKS." + stock);
MessageConsumer messageConsumer = consumer.getSession()
.createConsumer(destination);
messageConsumer.setMessageListener(new Listener());
}
}
public Session getSession() {
return session;
}
private KeyManager[] getKeyManagers(String keyStore, String keyStorePassword)
throws java.security.NoSuchAlgorithmException,
java.security.KeyStoreException,
java.security.GeneralSecurityException,
java.security.cert.CertificateException, java.io.IOException,
java.security.UnrecoverableKeyException {
System.out.println("Initiating KeyManagers");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(ClassLoader.getSystemResourceAsStream(keyStore), keyStorePassword.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
.getDefaultAlgorithm());
kmf.init(ks, keyStorePassword.toCharArray());
System.out.println("Initiated KeyManagers");
return kmf.getKeyManagers();
}
private TrustManager[] getTrustManagers(String trustStore)
throws java.security.NoSuchAlgorithmException,
java.security.KeyStoreException, java.io.IOException,
java.security.GeneralSecurityException {
System.out.println("Initiating TrustManagers");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(ClassLoader.getSystemResourceAsStream(trustStore), null);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
System.out.println("Initiated TrustManagers");
return tmf.getTrustManagers();
}
}
- ActiveMQ中使用SSL
- Activemq 使用 SSL
- activemq使用SSL通讯
- 配置 ActiveMQ 使用 SSL 连接
- ActiveMQ SSL应用之四 编写Java Demo类使用SSL连接ActiveMQ
- ActiveMQ SSL应用之六 Tomcat、Jboss部署项目使用SSL连接ActiveMQ
- 学习activeMQ配置SSL
- ActiveMQ SSL应用之七 ActiveMQ管理控制台队列Send To功能的使用
- andorid中使用activemq出错
- androd中使用 https ssl
- Python中使用ssl加密
- 在WinHTTP中使用SSL
- tomcat中使用SSL连接
- ActiveMQ SSL应用之三 ActiveMQ开启SSL连接器配置
- ActiveMQ SSL应用之五 Spring+ActiveMQ开启SSL连接
- 【ActiveMQ】ActiveMQ的使用
- 在ActiveMQ中使用VM transport connector
- ActiveMQ中advisory的使用和原理
- 网页常用的一些小技巧 [转]
- c#学习网站
- 电磁力天平
- java通过身份证号取得性别
- asp.net学习
- ActiveMQ中使用SSL
- Windows环境下Unicode编程总结
- 几个关于文件路径方面的函数,不断更新...
- Mac系统不能启动,Option键大显神通
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- 【如果】
- 服务器数据库搬迁步骤及命令
- 用事实证明POI和jxl写入效率
- 关联推广——360杀毒的快速崛起