

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

# 使用 MQTT 代理将客户端设备连接到 AWS IoT Greengrass 核心设备
<a name="connecting-to-mqtt"></a>

当您在 AWS IoT Greengrass 核心设备上使用 MQTT 代理时，设备会使用设备独有的*核心设备证书颁发机构 (CA)* 向代理颁发证书，以便与客户端建立双向 TLS 连接。

AWS IoT Greengrass 将自动生成核心设备 CA，或者您可以提供自己的 CA。连接[客户端设备身份验证](client-device-auth-component.md)组件 AWS IoT Greengrass 时，核心设备 CA 即注册到其中。自动生成的核心设备 CA 是永久性的，只要配置了客户端设备身份验证组件，该设备就会持续使用同一 CA。

启动 MQTT 代理后，它会请求证书。客户端设备身份验证组件使用核心设备 CA 颁发 X.509 证书。代理启动、证书过期或连接信息（例如 IP 地址）发生变化时，将轮换证书。有关更多信息，请参阅[本地 MQTT 代理的证书轮换](device-auth.md#mqtt-certificate-expiration)。

要将客户端连接到 MQTT 代理，您需要满足以下条件：
+ 客户端设备必须具有 AWS IoT Greengrass 核心设备 CA。您可以通过云发现或手动提供 CA 来获取此 CA。有关更多信息，请参阅[使用您自己的证书颁发机构](#use-your-own-CA)。
+ 核心设备 CA 颁发的代理证书中必须提供核心设备的完全限定域名（FQDN）或 IP 地址。您可以使用 [IP 检测器](ip-detector-component.md) 组件或通过手动配置 IP 地址来确保这一点。有关更多信息，请参阅[管理核心设备端点](manage-core-device-endpoints.md)。
+ 客户端设备身份验证组件必须授予客户端设备连接到 Greengrass 核心设备的权限。有关更多信息，请参阅[客户端设备身份验证](client-device-auth-component.md)。

## 使用您自己的证书颁发机构
<a name="use-your-own-CA"></a>

如果您的客户端设备无法通过访问云来发现您的核心设备，则您可以提供*核心设备证书颁发机构（CA）*。您的 Greengrass 核心设备使用核心设备 CA 来为您的 MQTT 代理颁发证书。配置核心设备并使用其 CA 预置客户端设备后，您的客户端设备就可以连接到端点并使用核心设备 CA（您自己提供的 CA 或自动生成的 CA）来验证 TLS 握手。

要将 [客户端设备身份验证](client-device-auth-component.md) 组件配置为使用您的核心设备 CA，请在部署组件时设置 `certificateAuthority` 配置参数。您必须在配置过程中提供以下详细信息：
+ 核心设备 CA 证书的位置。
+ 核心设备 CA 证书的私有密钥。
+ （可选）如果核心设备 CA 是中间 CA，则为指向根证书的证书链。

如果您提供核心设备 CA，请将该 CA AWS IoT Greengrass 注册到云端。

您可以将证书存储在硬件安全模块或文件系统中。以下示例显示了使用 HSM/TPM 存储的中间 CA 的 `certificateAuthority` 配置。请注意，证书链只能存储在磁盘上。

```
  "certificateAuthority": {
      "certificateUri": "pkcs11:object=CustomerIntermediateCA;type=cert",
      "privateKeyUri": "pkcs11:object=CustomerIntermediateCA;type=private"
      "certificateChainUri": "file:///home/ec2-user/creds/certificateChain.pem",
    }
```

在此示例中，`certificateAuthority` 配置参数会将客户端设备身份验证组件配置为使用文件系统中的中间 CA：

```
  "certificateAuthority": {
      "certificateUri": "file:///home/ec2-user/creds/intermediateCA.pem",
      "privateKeyUri": "file:///home/ec2-user/creds/intermediateCA.privateKey.pem",
      "certificateChainUri": "file:///home/ec2-user/creds/certificateChain.pem",
    }
```

要将设备连接到您的 AWS IoT Greengrass Core 设备，请执行以下操作：

1. 使用您所在组织的根 CA 为 Greengrass 核心设备创建中间证书颁发机构（CA）。我们建议您使用中间 CA 作为最佳安全实践。

1. 向 Greengrass 核心设备提供中间 CA 证书、私有密钥，以及指向您根 CA 的证书链。有关更多信息，请参阅 [客户端设备身份验证](client-device-auth-component.md)。中间 CA 成为 Greengrass 核心设备的核心设备 CA，设备向注册 CA。 AWS IoT Greengrass

1. 将客户端设备注册为 AWS IoT 事物。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的[创建事物对象](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)。将私有密钥、公有密钥、设备证书和根 CA 证书添加到客户端设备。如何添加信息取决于您的设备和软件。

配置设备后，您就可以使用证书和公有密钥链连接到 Greengrass 核心设备。您的软件负责查找核心设备端点。您可以手动为核心设备设置端点。有关更多信息，请参阅 [手动管理端点](manage-core-device-endpoints.md#manually-manage-endpoints)。