SSL

下一个有趣的与安全相关的主题是使用 SSL 加密传输层。ActiveMQ 和 Artemis 都利用 JDK 的 Java 安全套接字扩展 (JSSE),因此迁移应该很容易。

让我们快速回顾一下 SSL 在 ActiveMQ 中的用法。首先,您需要定义 *SSL 上下文*。您可以使用 <sslContext> 配置部分在 conf/activemq.xml 中完成,例如

<sslContext>
    <sslContext keyStore="file:${activemq.conf}/broker.ks" keyStorePassword="password"/>
</sslContext>

SSL 上下文定义了代理使用的密钥和信任存储。之后,您可以使用 ssl 模式设置您的传输连接器,最好再添加一些额外的选项。

<transportConnectors>
    <transportConnector name="ssl" uri="ssl://127.0.0.1:61617?transport.needClientAuth=true"/>
</transportConnectors>

这些选项与 SSLServerSocket 相关,并以 URL 参数的形式指定,使用 transport. 前缀,例如上面示例中的 needClientAuth

在 Artemis 中,Netty 负责所有与传输层相关的事情,因此它也为我们处理 SSL。所有配置选项都直接设置在接收器上,例如

<acceptors>
    <acceptor name="netty-ssl-acceptor">tcp://127.0.0.1:61617?sslEnabled=true;keyStorePath=${data.dir}/../etc/broker.ks;keyStorePassword=password;needClientAuth=true</acceptor>
</acceptors>

请注意,我们使用了相同的 Netty 连接器模式,只是添加了 sslEnabled=true 参数来使用 SSL。接下来,我们可以继续定义密钥和信任存储。两个代理之间在参数命名方面存在细微差异,如以下表格所示。

ActiveMQ Artemis
keyStore keyStorePath
keyStorePassword keyStorePassword
trustStore trustStorePath
trustStorePassword trustStorePassword

最后,您可以设置您需要的其他 SSLServerSocket 参数(例如本示例中的 needClientAuth)。在 Artemis 中不需要额外的前缀。

需要注意的是,您应该能够重用现有的密钥和信任存储,并将它们复制到新的代理。

与 "" 匹配的结果

    没有与 "" 匹配的结果