SSL 傳輸參考

使用 ActiveMQ Classic > 設定傳輸 > ActiveMQ Classic 連接 URI > SSL 傳輸參考

SSL 傳輸

SSL 傳輸允許用戶端使用 SSL over TCP socket 連接到遠端的 ActiveMQ Classic 代理程式。

設定語法

ssl://hostname:port?transportOptions

傳輸選項

來自 TCP 的設定選項是相關的。

URI 範例

ssl://127.0.0.1:61616?trace=false

SSLServerSocket 選項

從 5.4 版本開始,任何 SSLServerSocket 選項都可以透過 ?transport.XXX 設定在 TransportConnection 上,例如

ssl://127.0.0.1:61616?transport.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
ssl://127.0.0.1:61616?transport.needClientAuth=true

用戶端設定

JMS 用戶端可以簡單地使用 ActiveMQSslConnectionFactory 以及 ssl:// 代理程式 URL,如下面的 Spring 設定所示

<bean id="AMQJMSConnectionFactory" class="org.apache.activemq.ActiveMQSslConnectionFactory">
  <property name="trustStore" value="/path/to/truststore.ts" />
  <property name="trustStorePassword" value="password" />
  <property name="keyStore" value="/path/to/keystore.ks" />
  <property name="keyStorePassword" value="password" />
  <property name="brokerURL" value="ssl://127.0.0.1:61616" />
  <property name="userName" value="admin" /> 
  <property name="password" value="admin" />
</bean> 

除非代理程式的 SSL 傳輸設定為 transport.needClientAuth=true,否則用戶端不需要金鑰儲存庫,但需要信任儲存庫才能驗證代理程式的憑證。

類似於代理程式傳輸設定,您可以使用 ?socket.XXX 傳遞 SSL 傳輸選項,例如

ssl://127.0.0.1:61616?socket.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

主機名稱驗證 (從 5.15.6 版本開始)

從 5.15.6 版本開始,ActiveMQ Classic 現在支援 TLS 主機名稱驗證。這已預設為 ActiveMQ Classic 用戶端啟用,並且在代理程式上預設為關閉。若要設定

主機名稱驗證的伺服器端設定

伺服器端的預設值是停用主機名稱驗證,可以使用 ?transport.verifyHostName 進行設定。這僅適用於雙向 SSL,並且會將用戶端憑證的 CN 與其主機名稱進行比較以驗證它們是否匹配,例如

ssl://127.0.0.1:61616?transport.verifyHostName=true

主機名稱驗證的用戶端設定

ActiveMQ Classic 用戶端的預設值是啟用主機名稱驗證,可以使用 ?socket.verifyHostName 或簡單地使用沒有字首的 ?verifyHostName 進行設定。這會將伺服器憑證的 CN 與伺服器主機名稱進行比較,以驗證它們是否匹配,例如

ssl://127.0.0.1:61616?socket.verifyHostName=false

ssl://127.0.0.1:61616?verifyHostName=false

您也可以透過新增以下方式開啟 SSL 除錯資訊

-Djavax.net.debug=ssl

透過這種方式,您可以查看發生了什麼錯誤以及為什麼連線會關閉。

小心多播探索

如果您的 XML 設定檔包含以下內容,並且您希望使用 SSL

<networkConnector uri="multicast://default"/>

那麼您目前需要將其註解掉。原因是要防止 ActiveMQ Classic 嘗試連線到自身 - 如果您使用自我簽署的憑證執行此操作,您將會在主控台上看到不斷出現 certificate_unknown 堆疊追蹤的垃圾郵件,因為代理程式沒有設定信任儲存庫。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。版權所有 © 2024,The Apache Software Foundation。根據 Apache License 2.0 授權。