

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置 RabbitMQ 代理
<a name="rabbitmq-broker-configuration-parameters"></a>

配置包含 Cuttlefish 格式的 RabbitMQ 代理的所有设置。您可以先创建配置，然后创建代理。之后，您可以将配置应用于一个或多个代理。

## 属性
<a name="configuration-attributes"></a>

代理配置具有几个属性，例如：
+ 名称 (MyConfiguration)
+ 身份证（c-1234a5b6-78cd-901e-2fgh-3i45j6k178l9）
+ 亚马逊资源名称 (ARN) (arn: aws: mq: us-east-2:123456789012: 配置:c-1234a5b678cd-901e-2fgh-3i45j6k178l9)

有关配置属性的完整列表，请参阅《Amazon MQ REST API 参考》中的以下内容：
+ [REST 操作 ID：Configuration](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration.html)
+ [REST 操作 ID：Configurations](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configurations.html)

有关配置修订属性的完整列表，请参阅以下内容：
+ [REST 操作 ID：Configuration Revision](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revision.html)
+ [REST 操作 ID：Configuration Revisions](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revisions.html)

主题
+ [创建和应用 RabbitMQ 代理配置](rabbitmq-creating-applying-configurations.md)
+ [编辑适用于 RabbitMQ 的亚马逊 MQ 配置修订版](edit-current-rabbitmq-configuration-console.md)
+ [亚马逊 MQ 上 RabbitMQ 的可配置值](configurable-values.md)
+ [RabbitMQ 配置中支持 ARN](arn-support-rabbitmq-configuration.md)

# 创建和应用 RabbitMQ 代理配置
<a name="rabbitmq-creating-applying-configurations"></a>

*配置*中包含您的 RabbitMQ 代理的所有设置（采用 Cuttlefish 格式）。您可以先创建配置，然后创建代理。之后，您可以将配置应用于一个或多个代理

以下示例演示如何使用 AWS 管理控制台创建和应用 RabbitMQ 代理配置。

**重要**  
您只能使用 `DeleteConfiguration` API **删除**配置。更多信息，请参阅 *Amazon MQ API 参考*中的[配置](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/configurations-configuration-id.html)。

## 创建新的配置
<a name="creating-rabbitmq-configuration-from-scratch-console"></a>

 要将配置应用到代理，必须先创建配置。

1. 登录 [Amazon MQ 控制台](https://console.aws.amazon.com/amazon-mq/)。

1. 在左侧，展开导航面板，然后选择 **Configurations (配置)**。  
![\[Amazon MQ navigation panel showing Brokers and Configurations options.\]](http://docs.aws.amazon.com/zh_cn/amazon-mq/latest/developer-guide/images/amazon-mq-tutorials-create-configuration.png)

1. 在 **Configurations (配置)** 页面上，选择 **Create configuration (创建配置)**。

1. 在**创建配置**页面的**详细信息**部分，输入**配置名称**（例如 `MyConfiguration`）并选择**代理引擎**版本。

   要了解有关 Amazon MQ for RabbitMQ 支持的 RabbitMQ 引擎版本的更多信息，请参阅[管理 Amazon MQ for RabbitMQ 引擎版本](rabbitmq-version-management.md)。

1. 选择**创建配置**。

## 创建新的配置修订
<a name="creating-new-rabbitmq-configuration-revision-console"></a>

 创建配置后，必须使用配置修订版编辑配置。

1. 从配置列表中选择***MyConfiguration***。
**注意**  
始终会在 Amazon MQ 创建配置时为您创建第一个配置修订。

   在该***MyConfiguration***页面上，将显示您的新配置修订版使用的代理引擎类型和版本（例如 **RabbitMQ 3.xx.xx**）。

1. 在**配置详细信息**选项卡上，会显示配置修订号、描述和 Cuttlefish 格式的代理配置。
**注意**  
编辑当前配置会创建一个新的配置修订。

1. 选择**编辑配置**并对 Cuttlefish 配置进行更改。

1. 选择**保存**。

   **Save revision (保存修订)** 对话框出现。

1. （可选）类型 `A description of the changes in this revision`。

1. 选择**保存**。

   将会保存配置的新修订。
**重要**  
对配置进行更改*不会*立即将更改应用到代理。要应用更改，必须等待下一维护时段或者[重启代理](amazon-mq-rebooting-broker.md)。  
目前，您无法删除配置。

## 将配置修订应用到代理
<a name="apply-rabbitmq-configuration-revision-creating-console"></a>

 创建配置修订版后，可以将配置修订版应用到代理。

1. 在左侧，展开导航面板，然后选择 **Brokers (代理)**。  
![\[Amazon MQ navigation panel showing Brokers and Configurations options.\]](http://docs.aws.amazon.com/zh_cn/amazon-mq/latest/developer-guide/images/amazon-mq-tutorials-apply-configuration.png)

1. 从经纪人列表中，选择您的经纪商（例如 **MyBroker**），然后选择**编辑**。

1. 在 **“编辑 *MyBroker***” 页面的 “**配置**” 部分，选择**配置**和**修订版**，然后选择 “**计划修改**”。

1. 在 **Schedule broker modifications (计划代理修改)** 部分中，选择是在 **During the next scheduled maintenance window (下一个计划维护时段期间)** 还是 **Immediately (立即)** 应用修改。
**重要**  
单实例代理在重启期间处于离线状态。对于集群代理，在代理重启期间，每次只有一个节点宕机。

1. 选择**应用**。

   您的配置修订将在指定的时间应用到您的代理。

# 编辑 Amazon MQ for RabbitMQ 配置修订版
<a name="edit-current-rabbitmq-configuration-console"></a>

 以下说明介绍了如何编辑代理的配置修订版。

1. 登录 [Amazon MQ 控制台](https://console.aws.amazon.com/amazon-mq/)。

1. 从经纪人列表中，选择您的经纪商（例如 **MyBroker**），然后选择**编辑**。

1. 在***MyBroker***页面上，选择 “**编辑”**。

1. 在 **“编辑 *MyBroker***” 页面的 “**配置**” 部分，选择一个**配置**和一个**修订版**，然后选择**编辑**。
**注意**  
除非您在创建代理时选择配置，否则会在 Amazon MQ 创建代理时为您创建第一个配置修订。

   在该***MyBroker***页面上，将显示配置使用的代理引擎类型和版本（例如 **RabbitMQ 3.xx.xx**）。

1. 在**配置详细信息**选项卡上，会显示配置修订号、描述和 Cuttlefish 格式的代理配置。
**注意**  
编辑当前配置会创建一个新的配置修订。

1. 选择**编辑配置**并对 Cuttlefish 配置进行更改。

1. 选择**保存**。

   **Save revision (保存修订)** 对话框出现。

1. （可选）类型 `A description of the changes in this revision`。

1. 选择**保存**。

   将会保存配置的新修订。
**重要**  
对配置进行更改*不会*立即将更改应用到代理。要应用更改，必须等待下一维护时段或者[重启代理](amazon-mq-rebooting-broker.md)。  
目前，您无法删除配置。

# 可配置的值
<a name="configurable-values"></a>

您可以通过修改 AWS 管理控制台中的代理配置文件来设置以下代理配置选项的值。

除了下表中描述的值外，Amazon MQ 还支持与身份验证和授权以及资源限制相关的其他代理配置选项。有关这些配置选项的更多信息，请参见
+ [OAuth 2.0 配置](configure-oauth2.md)
+ [LDAP 配置](configure-ldap.md)
+ [HTTP 配置](configure-http.md)
+ [SSL 配置](configure-ssl.md)
+ [mTLS 配置](configure-mtls.md)
+ [ARN 支持](arn-support-rabbitmq-configuration.md)
+ [资源限制](rabbitmq-resource-limits-configuration.md)
+ [AMQP 客户端 SSL 配置](rabbitmq-amqp-client-ssl-configuration.md)


| 配置 | 默认值 | 建议值 | 值 | 适用版本 | 说明 | 
| --- | --- | --- | --- | --- | --- | 
| consumer\$1timeout | 1800000 毫秒（30 分钟） | 1800000 毫秒（30 分钟） | 0 到 2,147,483,647 毫秒 Amazon MQ 还支持值 0，这意味着 “无限”。 | 所有 版本 | 使用者不确认交付时，用于检测使用者交付确认的超时。 | 
| heartbeat | 60 秒 | 60 秒 | 60 到 3600 秒 | 所有 版本 | 定义 RabbitMQ 认为连接不可用之前的时间。 | 
| 管理限制.operator\$1policy\$1changes.disabled | true | true | true，false | 所有 版本 | 关闭更改操作员策略的功能。如果您进行此更改，强烈建议您在自己的操作员策略中包含 HA 属性。 | 
| quorum\$1queue.property\$1equeualence.relaxed\$1checks\$1on\$1redel | true | true | true，false | 所有 版本 | 设置为 TRUE 时，应用程序在重新声明仲裁队列时将避免发生通道异常。 | 
| secure.management.http.headers.enabled | true | true | true，false | 所有 版本 | 启用不可修改的 HTTP 安全标头。 | 

## 配置使用者交付确认
<a name="configuring-consumer-delivery"></a>

您可以将 consumer\$1timeout 配置为检测消费者何时不确认交付。如果使用者没有在超时值内发送确认，通道将被关闭。例如，如果使用默认值 1800000 毫秒，若使用者在 1800000 毫秒内没有发送交付确认，通道将被关闭。Amazon MQ 还支持值 0，这意味着 “无限”。

## 配置检测信号
<a name="configuring-heartbeat"></a>

您可以配置检测信号超时，以了解连接何时中断或出现故障。检测信号值定义了连接被视为断开前的时间限制。

## 配置操作员策略
<a name="configuring-operator-policies"></a>

每个虚拟主机上的原定设置操作员策略具有以下推荐的 HA 属性：

```
{
"name": "default_operator_policy_AWS_managed",
"pattern": ".*",
"apply-to": "all",
"priority": 0,
"definition": {
"ha-mode": "all",
"ha-sync-mode": "automatic"
}
}
```

默认情况下，无法通过 AWS 管理控制台 或管理 API 更改运营商政策。您可以通过在代理配置中添加以下行来启用更改：

```
management.restrictions.operator_policy_changes.disabled=false
```

如果您进行此更改，强烈建议您在自己的操作员策略中包含 HA 属性。

## 配置队列声明的宽松检查
<a name="configuring-relaxed-checks"></a>

如果您已将经典队列迁移到法定队列但未更新客户端代码，则可以通过将 quorum\$1queue.property\$1equeue.property\$1equeance.relaxed\$1checks\$1on\$1redeclation 设置为 true 来避免在重新声明法定队列时出现频道异常。

## 配置 HTTP 安全标头
<a name="configuring-http-security"></a>

secure.management.http.headers.enabled 配置启用以下 HTTP 安全标头：
+ [X-Content-Type-Options: nosniff：](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options)防止浏览器执行内容嗅探，即用于推断网站文件格式的算法。
+ [X-Frame-Options: DENY：](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options)防止他人将管理插件嵌入自己网站上的框架来欺骗他人
+ [Strict-Transport-Security：max-age=47304000； includeSubDomains](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)：强制浏览器在长时间（1.5 年）内与网站及其子域名建立后续连接时使用 HTTPS。

默认情况下，在 3.10 及更高版本上创建的 RabbitMQ 代理的 Amazon MQ 将将 secure.management.http.headers.enabled 设置为 true。你可以通过将 secure.management.http.headers.enabled 设置为 true 来打开这些 HTTP 安全标头。如果你想选择退出这些 HTTP 安全标头，请将 secure.management.http.headers.enabled 设置为 false。

# 配置 OAuth 2.0 身份验证和授权
<a name="configure-oauth2"></a>

有关 OAuth 2.0 配置选项和为代理设置 OAuth 2.0 身份验证的信息，请参阅[支持的 OAuth 2.0 配置](oauth-for-amq-for-rabbitmq.md#oauth-tutorial-supported-configs)和[使用 OAuth 2.0 身份验证和授权](oauth-tutorial.md)。

# 配置 LDAP 身份验证和授权
<a name="configure-ldap"></a>

有关 LDAP 配置选项和为代理设置 LDAP 身份验证的信息，请参阅[支持的 LDAP 配置](ldap-for-amq-for-rabbitmq.md#ldap-supported-configs)和[使用 LDAP 身份验证和授权](rabbitmq-ldap-tutorial.md)。

# 配置 HTTP 身份验证和授权
<a name="configure-http"></a>

有关 HTTP 身份验证配置值和为代理设置 HTTP 身份验证的信息，请参阅 [HTTP 身份验证和授权](http-for-amq-for-rabbitmq.md)以及[使用 HTTP 身份验证和授权](rabbitmq-http-tutorial.md)。

**注意**  
HTTP 身份验证插件仅适用于适用于 RabbitMQ 版本 4 及更高版本的亚马逊 MQ。

# 配置 SSL 证书身份验证
<a name="configure-ssl"></a>

有关 SSL 证书身份验证配置值和为代理设置 SSL 证书身份验证的信息，请参阅 [SSL 证书身份验证](ssl-for-amq-for-rabbitmq.md)和[使用 SSL 证书身份验证](rabbitmq-ssl-tutorial.md)。

**注意**  
SSL 证书身份验证插件仅适用于适用于 RabbitMQ 版本 4 及更高版本的亚马逊 MQ。

# 配置 mTLS
<a name="configure-mtls"></a>

适用于 RabbitMQ 的 Amazon MQ 支持双向 TLS (mTLS)，以实现与各种终端节点和外部服务的安全连接。mTLS 要求客户端和服务器都使用证书进行身份验证，从而提高安全性。

**注意**  
只有适用于 RabbitMQ 版本 4 及更高版本的 Amazon MQ 才能使用私有证书颁发机构。

**重要**  
适用于 RabbitMQ 的 Amazon MQ 强制使用证书和私钥文件 AWS ARNs 。有关更多详细信息，请参阅 [RabbitMQ 配置中的 ARN 支持](arn-support-rabbitmq-configuration.md)。

**Topics**
+ [AMQP 终端节点](#mtls-amqp-endpoint)
+ [RabbitMQ 管理插件](#mtls-management-plugin)
+ [RabbitMQ 2.0 插件 OAuth](#mtls-oauth2-plugin)
+ [RabbitMQ HTTP 身份验证插件](#mtls-http-plugin)
+ [RabbitMQ LDAP 插件](#mtls-ldap-plugin)
+ [AMQP 客户端连接](#mtls-amqp-client)

## AMQP 终端节点
<a name="mtls-amqp-endpoint"></a>

为与 AMQP 端点的客户端连接配置 mTLS。这与 SSL 证书身份验证一起使用。有关支持的配置，请参阅[SSL 证书身份验证](ssl-for-amq-for-rabbitmq.md)。

## RabbitMQ 管理插件
<a name="mtls-management-plugin"></a>

配置 mTLS 以连接到 RabbitMQ 管理接口。

**注意**  
管理 API 不支持严格的 mTLS。

`aws.arns.management.ssl.cacertfile`  
证书颁发机构文件，用于验证连接到管理接口的客户端证书。

`management.ssl.verify`  
对等验证模式。支持的值：`verify_none`，`verify_peer`

`management.ssl.depth`  
用于验证的最大证书链深度。

`management.ssl.hostname_verification`  
主机名验证模式。支持的值：`wildcard`，`none`

不支持以下 SSL 配置值：

### 查看完整清单
<a name="management-ssl-options-list-content"></a>
+ `management.ssl.cert`
+ `management.ssl.client_renegotiation`
+ `management.ssl.dh`
+ `management.ssl.dhfile`
+ `management.ssl.fail_if_no_peer_cert`
+ `management.ssl.honor_cipher_order`
+ `management.ssl.honor_ecc_order`
+ `management.ssl.key.RSAPrivateKey`
+ `management.ssl.key.DSAPrivateKey`
+ `management.ssl.key.PrivateKeyInfo`
+ `management.ssl.log_alert`
+ `management.ssl.password`
+ `management.ssl.psk_identity`
+ `management.ssl.reuse_sessions`
+ `management.ssl.secure_renegotiate`
+ `management.ssl.versions.$version`
+ `management.ssl.sni`

## RabbitMQ 2.0 插件 OAuth
<a name="mtls-oauth2-plugin"></a>

为从 Amazon MQ 到 2.0 身份提供商的连接配置 mTLS。 OAuth 有关支持的配置，请参阅[OAuth 2.0 身份验证和授权](oauth-for-amq-for-rabbitmq.md)。

## RabbitMQ HTTP 身份验证插件
<a name="mtls-http-plugin"></a>

为从 Amazon MQ 到 HTTP 身份验证服务器的连接配置 mTLS。有关支持的配置，请参阅[HTTP 身份验证和授权](http-for-amq-for-rabbitmq.md)。

## RabbitMQ LDAP 插件
<a name="mtls-ldap-plugin"></a>

为从亚马逊 MQ 到 LDAP 服务器的连接配置 mTLS。有关支持的配置，请参阅[LDAP 身份验证和授权](ldap-for-amq-for-rabbitmq.md)。

## AMQP 客户端连接
<a name="mtls-amqp-client"></a>

为联合和 shovel 使用的 AMQP 客户端连接配置 TLS 对等验证。有关更多信息，请参阅 [AMQP 客户端 SSL 配置](rabbitmq-amqp-client-ssl-configuration.md)。

**重要**  
Amazon MQ 目前不支持为 AMQP 客户端连接配置客户端证书。因此，federation 和 shovel 无法连接到需要客户端证书身份验证的启用 MTLS 的代理。

# 资源限制配置
<a name="configure-resource-limits"></a>

适用于 RabbitMQ 的亚马逊 MQ 支持从 RabbitMQ 4 开始配置代理资源限制。当您创建代理时，Amazon MQ 会自动将默认值应用于这些资源限制。这些默认值充当保护您的经纪商可用性的护栏，同时适应常见的客户使用模式。您可以通过更改限制配置值来自定义代理行为，以更好地满足您的特定工作负载要求。有关默认值和最大允许值的更多详细信息，请参阅[Amazon MQ for RabbitMQ 大小调整指南](rabbitmq-sizing-guidelines.md)。

## 资源名称和配置密钥
<a name="resource-limit-configuration-keys"></a>


| 资源名称 | 配置密钥 | 
| --- | --- | 
| Connection | connection\$1max | 
| 频道 | channel\$1max\$1per\$1node | 
| 队列 | cluster\$1queue\$1limit | 
| Vhost | vhost\$1max | 
| Shovel | runtime\$1parameters.limits.shovel | 
| Exchange | cluster\$1exchange\$1limit | 
| 每个渠道的消费者 | consumer\$1max\$1per\$1channel | 
| 最大消息大小 | max\$1message\$1size | 

## 如何覆盖资源限制
<a name="override-resource-limits"></a>

您可以使用亚马逊 MQ API 和亚马逊 MQ 控制台来覆盖资源限制。

以下示例说明如何使用以下方法覆盖队列计数的默认限制 AWS CLI：

```
aws mq update-configuration --configuration-id <config-id> --data "$(echo "cluster_queue_limit=500" | base64 --wrap=0)"
```

成功调用会创建配置修订版。您必须将配置与您的 RabbitMQ 代理关联并重新启动代理才能应用覆盖。欲了解更多详情，请参阅 [RabbitMQ Broker Configurations](rabbitmq-broker-configuration-parameters.md) 

## 资源限制覆盖错误
<a name="resource-limit-override-errors"></a>

将配置值超出支持范围的代理关联或创建代理会导致类似于以下内容的错误响应：

```
Configuration Revision N for configuration:cluster_queue_limit has limit: of value: 100000000 larger than maximum allowed limit:5000
```

# RabbitMQ 配置中支持 ARN
<a name="arn-support-rabbitmq-configuration"></a>

适用于 RabbitMQ 的亚马逊 MQ 支持 AWS ARNs 某些 RabbitMQ 配置设置的值。[这是由 RabbitMQ 社区插件 rabbitmq-aws 启用的。](https://github.com/amazon-mq/rabbitmq-aws)该插件由亚马逊 MQ 开发和维护，也可以在非亚马逊 MQ 管理的自托管 RabbitMQ 代理中使用。

**重要注意事项**  
aws 插件检索到的已解析的 ARN 值将在运行时直接传递给 RabbitMQ 进程。它们没有存储在 RabbitMQ 节点上的其他地方。
适用于 RabbitMQ 的 Amazon MQ 需要一个可以由亚马逊 MQ 代入的 IAM 角色才能访问已配置的。 ARNs这是通过设置进行配置的`aws.arns.assume_role_arn`。
调 UpdateBroker APIs 用 CreateBroker 或使用包含 IAM 角色的代理配置的用户必须拥有该角色的`iam:PassRole`权限。
IAM 角色必须与 RabbitMQ 代理存在于同一个 AWS 账户中。配置 ARNs 中的所有内容都必须与 RabbitMQ 代理位于同一 AWS 区域。
Amazon MQ 在担任 IAM 角色`aws:SourceArn`时会添加 IAM 全局条件密钥`aws:SourceAccount`。必须将这些值用于附加到角色的 IAM 策略中，以实现[混乱的副手保护](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

**Topics**
+ [支持的密钥](#arn-support-supported-keys)
+ [IAM 政策示例](#arn-support-iam-policy-samples)
+ [访问验证](#arn-support-validation)
+ [相关经纪人隔离状态](#arn-support-quarantine-states)
+ [示例方案](#arn-support-example-scenario)

## 支持的密钥
<a name="arn-support-supported-keys"></a>

`aws.arns.assume_role_arn`  
Amazon MQ 为访问其他资源而扮演的 IAM 角色 ARN。 AWS 使用任何其他 ARN 配置时为必填项。

### AMQP 终端节点
<a name="arn-support-amqp-endpoint"></a>


| 配置键 | 说明 | 
| --- | --- | 
| aws.arns.ssl\$1options.cacertfile | 用于 SSL/TLS 客户端连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 

### RabbitMQ 管理插件
<a name="arn-support-management-plugin"></a>


| 配置键 | 说明 | 
| --- | --- | 
| aws.arns.management.ssl.cacertfile | 管理接口 SSL/TLS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 

### RabbitMQ 2.0 插件 OAuth
<a name="arn-support-oauth2-plugin"></a>


| 配置键 | 说明 | 
| --- | --- | 
| aws.arns.auth\$1oauth2.https.cacertfile |  OAuth 2.0 HTTPS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 

### RabbitMQ HTTP 身份验证插件
<a name="arn-support-http-plugin"></a>


| 配置键 | 说明 | 
| --- | --- | 
| aws.arns.auth\$1http.ssl\$1options.cacertfile | 用于 HTTP 身份验证 SSL/TLS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 
| aws.arns.auth\$1http.ssl\$1options.certfile | 亚马逊 MQ 和 HTTP 身份验证服务器之间双向 TLS 连接的证书文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 
| aws.arns.auth\$1http.ssl\$1options.keyfile | 用于 Amazon MQ 和 HTTP 身份验证服务器之间双向 TLS 连接的私钥文件。亚马逊 MQ 需要使用 AWS Secrets Manager 来存储私钥。 | 

### RabbitMQ LDAP 插件
<a name="arn-support-ldap-plugin"></a>


| 配置键 | 说明 | 
| --- | --- | 
| aws.arns.auth\$1ldap.ssl\$1options.cacertfile | LDAP SSL/TLS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 
| aws.arns.auth\$1ldap.ssl\$1options.certfile | Amazon MQ 和 LDAP 服务器之间双向 TLS 连接的证书文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。 | 
| aws.arns.auth\$1ldap.ssl\$1options.keyfile | 用于亚马逊 MQ 和 LDAP 服务器之间双向 TLS 连接的私钥文件。亚马逊 MQ 需要使用 AWS Secrets Manager 来存储私钥。 | 
| aws.arns.auth\$1ldap.dn\$1lookup\$1bind.password | LDAP DN 查找绑定的密码。Amazon MQ 要求使用 AWS Secrets Manager 将密码存储为纯文本值。 | 
| aws.arns.auth\$1ldap.other\$1bind.password | LDAP 其他绑定的密码。Amazon MQ 要求使用 AWS Secrets Manager 将密码存储为纯文本值。 | 

## IAM 政策示例
<a name="arn-support-iam-policy-samples"></a>

有关包括代入角色策略文档和角色策略文档在内的 IAM 策略示例，请参阅 [CDK 示例实现](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-ldap-activedirectory-sample/lib/rabbitmq-activedirectory-stack.ts#L232)。

[使用 LDAP 身份验证和授权](rabbitmq-ldap-tutorial.md)有关如何设置 AWS Secrets Manager 和 Amazon S3 资源的步骤，请参阅。

## 访问验证
<a name="arn-support-validation"></a>

为了解决无法获取 ARN 值的情况，aws 插件支持一个 [RabbitMQ 管理 API 终端节点，可以调用该终端节点](https://github.com/amazon-mq/rabbitmq-aws/blob/main/API.md)来检查 Amazon MQ 是否能够成功担任该角色并进行解析。 AWS ARNs这样就无需更新代理配置、使用新的配置修订版更新代理以及重启代理来测试配置更改。

**注意**  
使用此 API 需要现有的 RabbitMQ 管理员用户。除了其他访问方法外，Amazon MQ 还建议使用内部用户创建测试代理。请参阅[同时启用 OAuth 2.0 和简单（内部）身份验证](oauth-tutorial.md#oauth-tutorial-config-both-auth-methods-using-cli)。然后，可以使用该用户访问验证 API。

**注意**  
尽管 aws 插件支持将新角色作为输入传递给验证 API，但 Amazon MQ 不支持此参数。用于验证的 IAM 角色应与代理配置`aws.arns.assume_role_arn`中的值相匹配。

## 相关经纪人隔离状态
<a name="arn-support-quarantine-states"></a>

有关与 ARN 支持问题相关的经纪人隔离状态的信息，请参阅：
+ [RABBITMQ\$1INVALID\$1ASSUMEROLE](troubleshooting-action-required-codes-invalid-assumerole.md)
+ [RabbitMQ\$1INVALID\$1ARN\$1LDAP](troubleshooting-action-required-codes-invalid-arn-ldap.md)
+ [RABBITMQ\$1INVALID\$1ARN](troubleshooting-action-required-codes-invalid-arn.md)

## 示例方案
<a name="arn-support-example-scenario"></a>
+ 代理`b-f0fc695e-2f9c-486b-845a-988023a3e55b`已配置为使用 IAM 角色`<role>`访问 AWS Secrets Manager 密钥 `<arn>`
+ 如果提供给 Amazon MQ 的角色没有 AWS Secrets Manager 密钥的读取权限，则 RabbitMQ 日志中将显示以下错误：

  ```
  [error] <0.254.0> aws_arn_config: {handle_assume_role,{error,{assume_role_failed,"AWS service is unavailable"}}}
  ```

  此外，经纪人将进入`INVALID_ASSUMEROLE`隔离状态。有关更多信息，请参阅 [INVALID](troubleshooting-action-required-codes-invalid-assumerole.md) \$1ASSUMEROLE。
+ LDAP 身份验证尝试将失败，并显示以下错误：

  ```
  [error] <0.254.0> LDAP bind failed: invalid_credentials
  ```
+ 使用适当的权限修复 IAM 角色
+ 调用验证端点以验证 RabbitMQ 现在是否可以访问该密钥：

  ```
  curl -4su 'guest:guest' -XPUT -H 'content-type: application/json' <broker-endpoint>/api/aws/arn/validate -d '{"assume_role_arn":"arn:aws:iam::<account-id>:role/<role-name>","arns":["arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"]}' | jq '.'
  ```

# AMQP 客户端 SSL 配置
<a name="rabbitmq-amqp-client-ssl-configuration"></a>

 Federation 和 shovel 使用 AMQP 在上游和下游代理之间进行通信。默认情况下，在 Amazon MQ for RabbitMQ 中为 AMQP 客户端启用 *TLS 对等验证* 4。使用此设置，在与上游代理建立连接时，在 Amazon MQ 代理上运行的联合和铲子 AMQP 客户端将执行同行验证。

 在亚马逊 MQ 代理上运行的 AMQP 客户端支持与 Mozilla 相同的证书颁发机构。如果您不使用 [ACM](https://www.amazontrust.com/repository)，请使用 M [ozilla 包含的 CA 证书列表中由 CA 颁发的证书](https://wiki.mozilla.org/CA/Included_Certificates)。如果您的本地代理使用其他证书颁发机构的证书，SSL 验证将失败。您可以针对这些用例禁用 *TLS 对等验证*。

**重要**  
Amazon MQ 目前不支持为 AMQP 客户端连接配置客户端证书。因此，联合和 shovel 无法连接到需要客户端证书身份验证的启用 MTLS 的代理。

**重要**  
 *在亚马逊 MQ for RabbitMQ 上，AMQP 客户端的 SSL 属性配置了 RabbitMQ 默认值（verify\$1none）。*适用于 RabbitMQ 3 的亚马逊 MQ 不支持覆盖这些默认值。

**注意**  
使用默认`verify_peer`设置，您可以在任意 2 个 Amazon MQ 经纪人之间建立联盟和切断连接，但这不支持在 Amazon MQ 经纪人与使用非 Amazon MQ CA 证书运行的私人经纪人或本地经纪人之间建立连接。要连接私有代理或本地代理，您需要在下游 Amazon MQ 代理上禁用对等验证。

## AMQP 客户端 SSL 配置密钥
<a name="amqp-client-ssl-configuration-keys"></a>


| 配置 | 配置密钥 | 支持的值 | 
| --- | --- | --- | 
| AMQP 客户端 SSL 对等验证 | amqp\$1client.ssl\$1options.verify | verify\$1none, verify\$1peer | 

## 如何覆盖 AMQP 客户端 SSL 对等验证
<a name="override-amqp-client-ssl-peer-verification"></a>

您可以在 RabbitMQ 4 代理上使用亚马逊 MQ API 和亚马逊 MQ 控制台覆盖 AMQP 客户端 SSL 对等验证。

以下示例说明如何使用以下方法覆盖 AMQP 客户端 SSL 对等验证： AWS CLI

```
aws mq update-configuration --configuration-id <config-id> --data "$(echo "amqp_client.ssl_options.verify=verify_none" | base64 --wrap=0)"
```

成功调用会创建配置修订版。您必须将配置与您的 RabbitMQ 代理关联并重新启动代理才能应用覆盖。欲了解更多详情，请参阅 [Creating and applying broker configurations](rabbitmq-creating-applying-configurations.md) 

**重要**  
使用时`verify_none`，SSL 加密仍处于活动状态，但未验证对等体的身份。仅在必要时才使用此设置，并确保您信任目标代理的网络路径。