第 5 章 保护代理
5.1. 保护连接
当代理连接到消息传递客户端时,或者代理连接到其他代理时,您可以使用传输层安全(TLS)保护这些连接。
您可以使用两个 TLS 配置:
- 单向 TLS,其中只有代理提供证书。这是最常见的配置。
- 双向(或 mutual)TLS,其中代理和客户端(或其他代理)都提供证书。
本节中的步骤演示了如何配置单向和双向 TLS。
5.1.1. 配置单向 TLS
以下流程演示了如何为单向 TLS 配置给定接受者。
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 对于给定的 acceptor,添加
sslEnabled
键并将值设为true
。另外,添加keyStorePath
和keyStorePassword
密钥。设置与代理键存储对应的值。例如:<acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!</acceptor>
5.1.2. 配置双向 TLS
以下步骤演示了如何配置双向 TLS。
先决条件
- 您必须已为单向 TLS 配置了您的给定的接受者。更多信息请参阅 第 5.1.1 节 “配置单向 TLS”。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 对于您之前为单向 TLS 配置的接收器,添加
needClientAuth
密钥。将值设为true
。例如:<acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true</acceptor>
上一步的配置假定客户端证书由可信提供者签名。如果客户端的证书 不是由 可信提供者(例如,自签名的签名)签名,则代理需要将客户端证书导入信任存储中。在这种情况下,添加
trustStorePath
和trustStorePassword
密钥。设置与代理信任存储对应的值。例如:<acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true;trustStorePath=../etc/client.truststore;trustStorePassword=5678!</acceptor>
AMQ Broker 支持多个协议,每个协议和平台都有不同的方法来指定 TLS 参数。但是,在使用 Core Protocol(一个桥接)的客户端时,TLS 参数在连接器 URL 上配置,这与代理的接受者非常相似。
5.1.3. TLS 配置选项
下表显示了所有可用的 TLS 配置选项。
选项 | 备注 |
---|---|
|
指定是否为连接启用 SSL。必须设置为 |
| 在接受者: 到持有代理证书的代理上的 TLS 密钥存储路径(无论是由认证机构进行自签名或签名)的代理上时。
在 连接器上用作时: 包含客户端证书的客户端上的 TLS 密钥存储路径。仅在使用双向 TLS 时,这与连接器相关。虽然您可以在代理上配置这个值,但它由客户端下载并使用。如果客户端需要使用与代理上设置的不同路径,可以使用标准的 |
| 在代理上使用的 acceptor: Password 作为代理上的密钥存储。
在连接器中使用时,密码用于客户端上的密钥存储。仅在使用双向 TLS 时,这与连接器相关。虽然您可以在代理上配置这个值,但它由客户端下载并使用。如果客户端需要使用代理上设置的不同密码,可以使用标准的 |
| 在接受者: 到含有代理信任的所有客户端密钥的代理上的 TLS 信任存储的路径。仅在使用双向 TLS 时,这与接受者相关。
在 连接器中使用时: 在包含客户端信任的所有代理的公钥的客户端上的 TLS 信任存储的路径。虽然您可以在代理上配置这个值,但它由客户端下载并使用。如果客户端需要使用与服务器上设置的不同路径,那么它可以通过使用标准的 |
| 当用于接受器: 代理中信任存储的密码。仅在使用双向 TLS 时,这与接受者相关。
在连接器中使用时: 客户端的信任存储的密码。虽然您可以在代理上配置这个值,但它由客户端下载并使用。如果客户端需要使用代理上设置的不同密码,可以使用标准的 |
|
无论是在接受者还是连接器中,这是用于 TLS 通信的以逗号分隔的密码套件列表。默认值为 |
|
无论是在接受者还是连接器中,这是用于 TLS 通信的以逗号分隔的协议列表。默认值为 |
|
此属性仅适用于接受者。它指示客户端连接到需要双向 TLS 的接受器。有效值为 |