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

tuwxkamq  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(190)

如何在ActiveMQ服务器上设置SSL?
我遵循this tutorial为ActiveMQ创建证书。
1.使用keytool为代理创建一个证书:

keytool -genkey -alias broker -keyalg RSA -keystore amq-server.ks

1.导出代理的证书,以便与客户端共享:

keytool -export -alias broker -keystore broker.ks -file amq- server_cert

1.为客户端创建证书/密钥库:

keytool -genkey -alias client -keyalg RSA -keystore amq-server.ks

1.为客户端创建一个信任库,并导入代理的证书。这将建立客户端“信任”代理:

keytool -import -alias broker -keystore client.ts -file amq-server_cert

我有Ubuntu Server和ActiveMQ,Windows Machine和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.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?

bf1o4zei

bf1o4zei1#

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

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

请注意,此命令使用client.ts而不是amq-server.ks。这将是您在MQTT.fx上使用的信任库。
此外,如果您使用MQTT,无论是否使用SSL,您都应该添加适当的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>

相关问题