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 堆疊追蹤的垃圾郵件,因為代理程式沒有設定信任儲存庫。