【问题标题】:How to enable SSL in ActiveMQ Artemis for MQTT protocol based on keystore and truststore如何在 ActiveMQ Artemis 中为基于 keystore 和 truststore 的 MQTT 协议启用 SSL
【发布时间】:2020-12-25 17:44:30
【问题描述】:

我已经在 Linux 中安装了 ActiveMQ Artemis 并配置了broker.xml。我正在使用证书,但 ActiveMQ Artemis 使用密钥库和信任库。如何创建这些以及如何为 MQTT 协议启用 SSL?

下面显示配置broker.xml

<acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true
        sslEnabled=true;
        keyStorePath=home/certs/server-ks/server1.p12;keyStorePassword=abc@1234;
        trustStorePath=home/certs/server-ks/server1.p12;
        trustStorePassword=abc@1234;needClientAuth=true
</acceptor>

我已将证书 (.pem) 转换为密钥库和信任库

keytool -import -alias rootCA -trustcacerts -file certs/ca.pem -keystore certs/activeMQ-truststore.jks

openssl pkcs12 -inkey certs/server-cert/server1.pem -in certs/server-cert/server1.pem -name server1 -export -out certs/server-ks/server1.p12

keytool -importkeystore -deststorepass abc@1234 -destkeystore certs/server-ks/server-keystore1.jks -srckeystore certs/server-ks/server1.p12 -srcstoretype PKCS12

如上所述,我已经为客户端密钥库创建/转换了。

我需要使用带有自签名客户端密钥库的 MQTT.FX 客户端连接代理。

如何实现这一点我很困惑。如果有人有想法,请帮助我。

【问题讨论】:

    标签: ssl mqtt activemq-artemis


    【解决方案1】:

    在自签名配置中,您通常会为代理和客户端创建一个证书,导出每个证书,然后将代理的证书导入客户端的信任库,并将客户端的证书导入代理的信任库。您可以使用 Java 的 keytool 命令完成所有这些操作。

    查看examples/features/standard/ssl-enabled-dual-authentication 目录中 ActiveMQ Artemis 附带的示例。它演示了如何执行此操作,例如:

    keytool -genkey -keystore server-side-keystore.jks -storepass secureexample -keypass secureexample -dname "CN=ActiveMQ Artemis Server, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -keyalg RSA
    keytool -export -keystore server-side-keystore.jks -file server-side-cert.cer -storepass secureexample
    keytool -import -keystore client-side-truststore.jks -file server-side-cert.cer -storepass secureexample -keypass secureexample -noprompt
    keytool -genkey -keystore client-side-keystore.jks -storepass secureexample -keypass secureexample -dname "CN=ActiveMQ Artemis Client, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -keyalg RSA
    keytool -export -keystore client-side-keystore.jks -file client-side-cert.cer -storepass secureexample
    keytool -import -keystore server-side-truststore.jks -file client-side-cert.cer -storepass secureexample -keypass secureexample -noprompt
    

    您的acceptor 需要sslEnabled=trueneedClientAuth=true

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 2018-01-06
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2016-07-28
      相关资源
      最近更新 更多