通过配置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 | <sslContext> |
mqtt增加ssl协议
1 | <transportConnector name="mqtt+ssl" uri="mqtt+ssl://0.0.0.0:1883?maximumConnections=30000&wireFormat.maxFrameSize=204857600"/> |
最后重启服务。