1.简介
随着微服务的兴起,MQ在分布式的架构中起到了至关重要的作用,市场上用的比较多的消息中间件有IBM MQ、rabbitMQ、activeMQ。
activemq作为一个开源的详细中间件,支持jms规范,市场的占有率很大。能很好的集成到spring中。支持多种通讯协议:tcp、nio、udp、ssl协议、http(s)等协议。
suizh
本例中为了演示较为复杂的ssl协议。并使用java中的keytool命令生成整数文件,完成ssl证书的双向验证。
1.1实验环境
192.168.233.133:ActiveMQ 5.14.4 centos7 (服务器)
192.168.233.1 :客户端采用的java程序 window7(X64) (客户端)
1.2证书相关步骤:
配置SSL的双向验证,需要在客户端和服务端分别为对方生成对应的证书文件
Server端:
broker.keystore:服务器端的秘钥库
broker.truststore:存储客户端的证书信息
Client端:
client.ketstore:客户端的秘钥库
client.truststore:存储服务器端的证书信息
1.2.1 服务器生成keystore(broker.keystore)
keytool -genkey -v -alias broker -keyalg RSA -keystore broker.keystore -dname "CN=192.168.233.133,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass broker -keypass broker
1.2.2.服务器生成颁发给客户端的证书(client_cert)
keytool -export -alias broker -keystore broker.keystore -file client_cert -storepass broke
1.2.3.客户端生成keystore(client.keystore)
keytool -genkey -v -alias client -keyalg RSA -keystore client.keystore -dname "CN=192.168.233.1,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass client -keypass client
1.2.4.客户端成成颁发给服务器的证书(broker_cert)
keytool -export -alias client -keystore client.keystore -file broker_cert -storepass client
1.2.5.服务器导入客户端颁发的证书到truststore中(broker.truststore)
将客户端生成的证书broker_cert上传到服务器端
keytool -import -v -file broker_cert -keystore broker.truststore -storepass broker
1.2.6.客户端导入服务器颁发的证书到truststore中(client.truststore)
将服务器端生成的client__cert下载到客户端:
keytool -import -v -file client_cert -keystore client.truststore -storepass client
1.2.7 修改activemq的配置文件:
vi /data/activemq/conf/activemq.xml
<!--broker的子节点-->
<sslContext>
<sslContext keyStore="file:${activemq.base}/keys/broker.keystore"
keyStorePassword="broker"
trustStore="file:${activemq.base}/keys/broker.truststore"
trustStorePassword="broker"
/>
</sslContext>
<!--添加connector的配置-->
<transportConnector name="ssl" uri="ssl://0.0.0.0:62618?needClientAuth=true"/>
2.3客户端相关的配置:
客户端需要制定client.keystore和client.truststore文件的位置,java程序使用eclipse开发。
配置。
2.3.1配置jvm相关的参数:
-Djavax.net.debug=ssl
-Djavax.net.ssl.keyStore="C:/Users/kefan/Desktop/conf/client.keystore"
-Djavax.net.ssl.keyStorePassword="client"
-Djavax.net.ssl.trustStore="C:/Users/kefan/Desktop/conf/client.truststore"
-Djavax.net.ssl.trustStorePassword="client"
2.3.2客户端项目下载地址: