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

问题描述 投票:0回答:1

如何在 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. 为客户端创建证书/密钥库:
    keytool -genkey -alias client -keyalg RSA -keystore amq-server.ks
    
  4. 为客户端创建信任库,并导入经纪商的证书。这表明客户“信任”经纪人:
    keytool -import -alias broker -keystore client.ts -file amq-server_cert
    

我有带有 ActiveMQ 的 Ubuntu 服务器和带有 MQTT.fx 的 Windows 机器。

我在 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.fx,并且我正在尝试通过 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 方式?

java activemq-classic broker
1个回答
0
投票

在步骤 #3 中,您应该使用此命令:

keytool -genkey -alias client -keyalg RSA -keystore client.ts

请注意,此命令使用

client.ts
而不是
amq-server.ks
。这将是您在 MQTT.fx 上使用的信任库。

此外,如果您使用带或不带 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>
© www.soinside.com 2019 - 2024. All rights reserved.