ActiveMq mqtt服务端配置SSL证书

通过配置SSL可以为mqtt服务端提供一个安全的通讯通道。

首先需要生成SSL证书,生成后,为ActiveMq配置支持SSL协议。

生成SSL证书

生成服务器证书keystore

1
keytool -genkey -v -alias broker -keyalg RSA -keystore broker.keystore -dname "CN=mqtt.itcto.cn,OU=itcto.cn,O=itcto.cn,L=itcto.cn,ST=itcto.cn,c=itcto.cn" -storepass broker -keypass itcto.cn

生成颁发给客户端的证书

通过服务器证书生成颁发给客户端的证书

1
keytool -export -alias broker -keystore broker.keystore -file client_cert -storepass itcto.cn

生成客户端keystore

1
keytool -genkey -v -alias client -keyalg RSA -keystore client.keystore -dname "CN=mqtt.itcto.cn,OU=itcto.cn,O=itcto.cn,L=itcto.cn,ST=itcto.cn,c=itcto.cn" -storepass client -keypass itcto.cn

客户端生成颁发给服务器的证书

1
keytool -export -alias client -keystore client.keystore -file broker_cert -storepass itcto.cn

服务器导入客户端颁发的证书到truststore中

1
keytool -import -v -file  broker_cert -keystore  broker.truststore -storepass itcto.cn

客户端导入服务器颁发的证书到truststore中

1
keytool -import -v -file  client_cert -keystore  client.truststore -storepass itcto.cn

ActiveMq修改配置

修改ActiveMq配置,使ActiveMq mqtt支持SSL协议。

拷贝证书文件

把生成好的证书,拷贝到ActiveMq安装目录/conf/cert/下,
cert文件夹是新建的。

修改activemq.xml文件

broker的子节点中增加证书配置。

1
2
3
4
5
6
7
<sslContext>
<sslContext keyStore="file:${activemq.base}/conf/cert/broker.keystore"
keyStorePassword="itcto.cn"
trustStore="file:${activemq.base}/conf/cert/broker.truststore"
trustStorePassword="itcto.cn"
/>
</sslContext>

mqtt增加ssl协议

1
<transportConnector name="mqtt+ssl" uri="mqtt+ssl://0.0.0.0:1883?maximumConnections=30000&amp;wireFormat.maxFrameSize=204857600"/>

最后重启服务。