使用带有自签名证书的 SSL 连接到 ActiveMQ "Classic"



如何在ActiveMQ服务器上设置SSL ?

我按照本教程为ActiveMQ创建证书。

  1. 使用keytool为代理创建一个证书:
    keytool -genkey -alias broker -keyalg RSA -keystore amq-server.ks
    
  2. 导出经纪人的证书,以便与客户端共享:
    keytool -export -alias broker -keystore broker.ks -file amq- server_cert
    
  3. 为客户端创建证书/keystore:
    keytool -genkey -alias client -keyalg RSA -keystore amq-server.ks
    
  4. 为客户端创建一个信任库,并导入代理的证书。这确立了客户的"信任"。代理:
    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>

相关内容

  • 没有找到相关文章

最新更新