SSL 传输参考

使用 ActiveMQ Classic > 配置传输 > ActiveMQ Classic 连接 URI > SSL 传输参考

SSL 传输

SSL 传输允许客户端通过 TCP 套接字上的 SSL 连接到远程 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 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。