如何在ActiveMQ服务器上设置SSL ?
我按照本教程为ActiveMQ创建证书。
- 使用keytool为代理创建一个证书:
keytool -genkey -alias broker -keyalg RSA -keystore amq-server.ks
- 导出经纪人的证书,以便与客户端共享:
keytool -export -alias broker -keystore broker.ks -file amq- server_cert
- 为客户端创建证书/keystore:
keytool -genkey -alias client -keyalg RSA -keystore amq-server.ks
- 为客户端创建一个信任库,并导入代理的证书。这确立了客户的"信任"。代理:
keytool -import -alias broker -keystore client.ts -file amq-server_cert
我有Ubuntu服务器与ActiveMQ和Windows机器与MQTT.fx。
我在ActiveMQ配置中添加了这个设置:
<transportConnector name="openwire" uri="tcp://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ssl" uri="ssl://0.0.0.0:61714?transport.enabledProtocols=TLSv1.2"/`
我现在在机器上安装了MQTT。我正在尝试通过SSL连接。我创建了2个配置-一个有证书,另一个没有证书。无证连接工程。与证书的连接不起作用。我选择了服务器证书或者客户端证书不起作用
如果我将此设置添加到ActiveMQ配置中,则不再工作
<sslContext>
<sslContext keyStore="file:${activemq.base}/conf/amq-server.ks"
keyStorePassword="password"
trustStore="file:${activemq.base}/conf/amq-server.ts"
trustStorePassword="password"/>
</sslContext>
我已经尝试了所有的组合都不起作用。
有人能帮帮我吗?如何在ActiveMQ上设置SSL并与证书进行通信?也许单向SSL?
在步骤#3中,您应该使用以下命令:
keytool -genkey -alias client -keyalg RSA -keystore client.ts
注意这个命令使用client.ts
而不是amq-server.ks
。这将是您在MQTT.fx上使用的信任库。
此外,如果您正在使用带SSL或不带SSL的MQTT,则应该添加适当的transportConnector
元素并使用来自MQTT应用程序的元素,例如:
<transportConnector name="mqtt+nio" uri="mqtt+nio://0.0.0.0:1883"/>
<transportConnector name="mqtt+nio" uri="mqtt+nio+ssl://0.0.0.0:8883"/>
您的sslContext
应该配置如下:
<sslContext>
<sslContext keyStore="file:${activemq.conf}/amq-server.ks" keyStorePassword="password"/>
</sslContext>