activemq使用SSL通讯

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客户端项目下载地址:

点击打开链接











猜你喜欢

转载自blog.csdn.net/kpp19920121/article/details/69662242