簡體   English   中英

SSL 用於 AWS EC2 實例上的 Apache ActiveMQ

[英]SSL for Apache ActiveMQ on AWS EC2 instance

我有一個 Java 應用程序配置了一些自簽名證書,這些證書通過 SSL/TLS 版本 1.2 與 ActiveMQ 版本 5.13.0 通信。 相關的自簽名證書駐留在其各自的密鑰庫和信任庫中。 這種通過 TLS 的連接在我的本地 Windows 機器上運行良好,沒有正確證書的客戶端無法與代理通信,而具有正確證書的客戶端可以。

但是,當在 AWS EC2 實例上使用相同的代碼和密鑰庫時,這不起作用。 我在那里安裝了相同版本的 ActiveMQ,並且在代理和客戶端使用相同的密鑰庫和信任庫。 沒有配置任何證書的客戶端能夠連接到代理並進行通信。

我想了解是否必須在 Linux 機器上以不同方式配置 ActiveMQ 的 SSL/TLS,或者是否還有其他我遺漏的東西。

來自activemq.xml文件的片段,使 activemq 能夠使用 SSL/TLS:

<managementContext>
    <managementContext createConnector="false"/>
</managementContext>

<sslContext> 
    <sslContext keyStore="file:${activemq.base}/conf/broker.ks"
      keyStorePassword="changeit" trustStore="file:${activemq.base}/conf/broker.ts"
      trustStorePassword="changeit"/> 
</sslContext>

<transportConnectors>
    <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxInactivityDuration=300000&amp;wireFormat.maxFrameSize=104857600&amp;jms.messagePrioritySupported=false"/>
    <transportConnector name ="ssl" uri="ssl://0.0.0.0:61714?transport.enabledProtocols=TLSv1.2"/>
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>

回答我自己的問題。 我處理 Java 客戶端,該客戶端連接到為 SSL 指定的端口 61714。 與物聯網設備打交道的人告訴我,這些設備默認使用端口 1883 進行 MQTT 連接,端口 8883 用於安全 MQTT 連接。 這可以通過將以下行添加到傳輸連接器來配置:

<transportConnector name="mqtt+ssl" uri="mqtt+ssl://0.0.0.0:8883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

該設備有一些限制,因此無法連接到 SSL 端口並發布 MQTT 消息。 另一方面,Java 客戶端連接到 SSL 端口和發布和消費 MQTT 消息沒有問題,因此添加上述行解決了這個問題。 如果需要,可以注釋掉端口 1883 的傳輸連接器,這樣沒有所需證書的客戶端就無法連接到 MQTT 代理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM