通过配置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&wireFormat.maxFrameSize=204857600"/>
|
最后重启服务。