第 5 章 安全代理
5.1. 保护连接
当代理连接到消息传递客户端或代理连接到其他代理时,您可以使用传输层安全(TLS)保护这些连接。
您可以使用两个 TLS 配置:
- 单向 TLS,其中只有代理提供证书。这是最常见的配置。
- 双向(或 相互)TLS,其中代理和客户端(或其他代理)都存在证书。
本节中的步骤演示了如何配置单向和双向 TLS。
5.1.1. 配置单向 TLS
以下流程演示了如何为单向 TLS 配置给定接受器。
-
打开
<broker-instance-dir>/etc/broker.xml
配置文件。 对于给定的接受者,请添加
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”。
步骤
-
打开
<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 时,这才与连接器相关。虽然您可以在代理上配置此值,但客户端已下载并使用它。如果客户端需要使用代理上设置的不同路径,它可利用标准的 |
| 在接受者中使用:代理上的密钥存储的密码。
连接器使用时:客户端上为密钥存储的密码。只有在您使用双向 TLS 时,这才与连接器相关。虽然您可以在代理上配置此值,但客户端已下载并使用它。如果客户端需要使用代理上设置的不同密码,那么它可利用标准的 |
| 在接受者中使用:包含代理上的 TLS 信任存储的路径,该代理包含代理信任的所有客户端的密钥。只有在您使用双向 TLS 时,这才与接受者相关。
连接器使用时:在客户端上 TLS 信任存储的路径,其中包含客户端信任的所有代理的公钥。虽然您可以在代理上配置此值,但客户端已下载并使用它。如果客户端需要使用与服务器上设置的不同路径,那么它可以通过使用标准的 |
| 在接受者中使用:代理中信任存储的密码。只有在您使用双向 TLS 时,这才与接受者相关。
连接器使用时:客户端中信任存储的密码。虽然您可以在代理上配置此值,但客户端已下载并使用它。如果客户端需要使用代理上设置的不同密码,那么它可使用标准的 |
|
无论是在接受者还是连接器上,这都是用于 TLS 通信的逗号分隔的密码套件列表。默认值为 |
|
无论是在接受者还是连接器上,这都是用于 TLS 通信的逗号分隔协议列表。默认值为 |
|
此属性仅适用于接受者。它指示客户端连接到双向 TLS。有效值为 |