第 5 章 保护代理
5.1. 保护连接
当代理连接到消息传递客户端或代理连接到其他代理时,您可以使用传输层安全(TLS)保护这些连接。
您可以使用两种 TLS 配置:
- 单向 TLS,其中仅代理提供证书。这是最常见的配置。
- 双向(或 mutual)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 配置的接收器,添加 require
ClientAuth
密钥。将值设为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 代理支持多个协议,每个协议和平台都有不同的方法来指定 TLS 参数。但是,在使用核心协议(桥接)的客户端时,TLS 参数在连接器 URL 上配置,类似于代理接收器上。
5.1.3. TLS 配置选项
下表显示了所有可用的 TLS 配置选项:
选项 | 备注 |
---|---|
|
指定是否为连接启用 SSL。必须设为 |
| 当用于接收器时:包含代理证书的代理(无论是自签名还是由某一机构签名)上的 TLS 密钥存储路径。
在连接器中使用时:保存客户端证书的 TLS 密钥存储路径。只有在使用双向 TLS 时,这才与连接器相关。虽然您可以在代理中配置这个值,但它会被客户端下载和使用。如果客户端需要使用与代理上设置的不同路径,则可以使用标准的 |
| 当用于接收器时:代理上的密钥存储密码。
在连接器中使用时:客户端上密钥存储的密码。只有在使用双向 TLS 时,这才与连接器相关。虽然您可以在代理中配置这个值,但它会被客户端下载和使用。如果客户端需要使用与代理上设置的不同密码,那么它可以使用标准的 |
| 当用于接收器时:代理上的 TLS 信任存储路径,该代理保存了代理信任的密钥。只有在您使用双向 TLS 时,这才与接收器相关。
在连接器中使用时:在保存客户端信任存储的客户端中 TLS 信任存储的路径。虽然您可以在代理中配置这个值,但它会被客户端下载和使用。如果客户端需要使用与服务器上设置的不同路径不同的路径,那么它可以使用标准的 |
| 当用于接收器时:代理信任存储的密码。只有在您使用双向 TLS 时,这才与接收器相关。
在连接器中使用时:客户端上信任存储的密码。虽然您可以在代理中配置这个值,但它会被客户端下载和使用。如果客户端需要使用与代理上设置的不同密码,则可以使用标准的 |
|
无论是在接收器还是连接器上使用,都是用于 TLS 通信的密码套件的逗号分隔列表。默认值为 |
|
无论是在接收器还是连接器上使用,这是用于 TLS 通信的协议的逗号分隔列表。默认值为 |
|
此属性仅适用于接收器。它指示客户端连接到需要双向 TLS 的接收器。有效值为 |