

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

# 注册客户端证书
<a name="register-device-cert"></a>

必须向注册客户端证书， AWS IoT 才能在客户端和之间进行通信 AWS IoT。您可以手动注册每个客户端证书，也可以将客户端证书配置 AWS IoT 为在客户端首次连接时自动注册。

 如果您希望客户端和设备在首次连接时注册其客户端证书，则必须在要使用的区域中拥有使用 AWS IoT 签署客户端证书所需的 [注册 CA 证书](manage-your-CA-certs.md#register-CA-cert)。Amazon Root CA 将自动向注册 AWS IoT。

客户证书可以由 AWS 账户 和地区共享。在您要使用客户端证书的每个账户和区域中，必须执行这些主题中的流程。在一个账户或区域中注册的客户端证书，不会在另一个账户或区域中自动识别。

**注意**  
使用传输层安全性（TLS）协议连接到 AWS IoT 的客户端必须支持 TLS 的[服务器名称指示（SNI）扩展](https://tools.ietf.org/html/rfc3546#section-3.1)。有关更多信息，请参阅 [运输安全 AWS IoT Core](transport-security.md)。

**Topics**
+ [手动注册客户端证书](manual-cert-registration.md)
+ [在客户端连接到注册时 AWS IoT just-in-time 注册客户端证书 (JITR)](auto-register-device-cert.md)

# 手动注册客户端证书
<a name="manual-cert-registration"></a>

您可以使用 AWS IoT 控制台和手动注册客户证书 AWS CLI。

使用的注册程序取决于证书是否将由 AWS 账户和地区共享。在一个账户或区域中注册的客户端证书，不会在另一个账户或区域中自动识别。

在您要使用客户端证书的每个账户和区域中，必须执行此主题中的流程。客户证书可以由 AWS 账户 s 和 Regions 共享。

## 注册由已注册的 CA（控制台）签发的客户端证书
<a name="manual-cert-registration-console"></a>

**注意**  
在执行此过程之前，请确保您拥有客户端证书的.pem 文件，并且该客户端证书由您[注册](manage-your-CA-certs.md#register-CA-cert)的 CA 签名。 AWS IoT

**AWS IoT 使用控制台注册现有证书**

1. 登录 AWS 管理控制台并打开[AWS IoT 控制台](https://console.aws.amazon.com/iot/home)。

1. 在导航窗格的 **Manage**（管理）部分下，选择 **Security**（安全性），然后选择 **Certificates**（证书）。

1. 在 **Certificates**（证书）对话框的 **Certificates**（证书）页上，选择 **Add certificate**（添加证书），然后选择 **Register certificates**（注册证书）。

1. 在 **Certificates to upload**（要上载的证书）对话框的 **Register certificate**（注册证书）页上，执行以下操作：
   + 选择 **CA 注册到 AWS IoT**。
   + 从 **Choose a CA certificate**（选择 CA 证书）中，选择您的 **Certification authority**（证书颁发机构）。
     + 选择 **Register a new CA**（注册新 CA）以注册未向 AWS IoT注册的新 **Certification authority**（证书颁发机构）。
     + 如果 **Amazon Root certificate authority**（Amazon 根证书颁发机构）是您的证书颁发机构，请将 **Choose a CA certificate**（选择 CA 证书）留空。
   + 最多选择 10 个证书进行上传和注册 AWS IoT。
     + 使用您在 [创建 AWS IoT 客户证书](device-certs-create.md) 和 [使用您的 CA 证书创建客户端证书](create-device-cert.md) 中创建的证书文件。
   + 选择 **Activate**（激活）或 **Deactivate**（停用）。如果选择**停用**，[激活或停用客户端证书](activate-or-deactivate-device-cert.md) 介绍了如何在证书注册后激活证书。
   + 选择**注册**。

在 **Certificates**（证书）对话框的 **Certificates**（证书）页上，现在将显示您注册的证书。

## 注册由未注册的 CA（控制台）签发的客户端证书
<a name="manual-cert-registration-console-noca"></a>

**注意**  
在执行此流程之前，请确保您拥有客户端证书 .pem 文件。

**AWS IoT 使用控制台注册现有证书**

1. 登录 AWS 管理控制台并打开[AWS IoT 控制台](https://console.aws.amazon.com/iot/home)。

1. 在左侧的导航窗格中，选择**安全**，选择**证书**，然后选择**创建**。

1. 在 **Create a certificate**（创建证书）上，找到 **Use my certificate**（使用我的证书）条目，然后选择 **Get started**（入门）。

1. 在 **Select CA**（选择 CA）上，选择 **Next**（下一步）。

1.  在 **Register exsiting device certificates**（注册现有的设备证书）上，选择 **Select certificates**（选择证书），并选择最多 10 个要注册的证书文件。

1.  关闭文件对话框后，选择在注册客户端证书时是要激活还是吊销客户端证书。

   如果您在注册证书时未激活证书，[激活客户端证书（控制台）](activate-or-deactivate-device-cert.md#activate-device-cert-console) 中介绍了以后如何激活证书。

   如果证书在注册时被吊销，则以后无法激活。

   选择要注册的证书文件，选择注册后要执行的操作，然后选择 **Register certificates**（注册证书）。

成功注册的客户端证书将显示在证书列表中。

## 注册由已注册的 CA（CLI）签发的客户端证书
<a name="manual-cert-registration-cli"></a>

**注意**  
在执行此流程之前，请确保您具有证书颁发机构（CA）.pem 和客户端证书的 .pem 文件。客户端证书必须由您[注册](manage-your-CA-certs.md#register-CA-cert)的证书颁发机构 (CA) 签名 AWS IoT。

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html) 命令注册客户端证书但不激活。

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

客户证书已在中注册 AWS IoT，但尚未激活。有关如何在以后激活的信息，请参阅 [激活客户端证书（CLI）](activate-or-deactivate-device-cert.md#activate-device-cert-cli)。

您也可以在使用此命令注册客户端证书时进行激活。

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

有关激活证书以使其可用于连接的更多信息 AWS IoT，请参阅 [激活或停用客户端证书](activate-or-deactivate-device-cert.md)

## 注册由未注册的 CA（CLI）签发的客户端证书
<a name="manual-cert-registration-noca-cli"></a>

**注意**  
在执行此流程之前，请确保您拥有证书 .pem 文件。

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html) 命令注册客户端证书但不激活。

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

客户证书已在中注册 AWS IoT，但尚未激活。有关如何在以后激活的信息，请参阅 [激活客户端证书（CLI）](activate-or-deactivate-device-cert.md#activate-device-cert-cli)。

您也可以在使用此命令注册客户端证书时进行激活。

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

有关激活证书以使其可用于连接的更多信息 AWS IoT，请参阅[激活或停用客户端证书](activate-or-deactivate-device-cert.md)。

# 在客户端连接到注册时 AWS IoT just-in-time 注册客户端证书 (JITR)
<a name="auto-register-device-cert"></a>

您可以将 CA 证书配置为启用已签名的客户端证书，以便在客户端首次连接时 AWS IoT 自动注册该证书 AWS IoT。

要在客户端首次连接时注册客户端证书，必须启用 CA 证书进行自动注册，并将客户端的第一个连接配置为提供所需的证书。 AWS IoT 

## 配置 CA 证书以支持自动注册（控制台）
<a name="enable-auto-registration-console"></a>

**使用 AWS IoT 控制台配置 CA 证书以支持自动注册客户证书**

1. 登录 AWS 管理控制台并打开[AWS IoT 控制台](https://console.aws.amazon.com/iot/home)。

1. 在左侧导航窗格中，选择 “**安全**”，选择**CAs**。

1. 在证书颁发机构列表中，找到要启用自动注册的颁发机构，然后使用省略号图标打开选项菜单。

1. 在选项菜单上，选择**启用自动注册**。

**注意**  
证书颁发机构列表中不显示自动注册状态。要查看证书颁发机构的自动注册状态，您必须打开证书颁发机构的**详细信息**页面。

## 配置 CA 证书以支持自动注册（CLI）
<a name="enable-auto-registration-cli"></a>

如果您已经向注册了 CA 证书 AWS IoT，请使用[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)命令将 CA 证书设置为`autoRegistrationStatus``ENABLE`。

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

如果您要在注册 CA 证书时启用 `autoRegistrationStatus`，请使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) 命令。

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) 命令查看 CA 证书的状态。

## 配置客户端的首次连接以进行自动注册
<a name="configure-auto-reg-first-connect"></a>

当客户端首次尝试 AWS IoT 连接时，在传输层安全 (TLS) 握手期间，由您的 CA 证书签名的客户端证书必须存在于客户端上。

当客户端连接到时 AWS IoT，使用您在创建客户端证书或[创建自己的 AWS IoT 客户端证书](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html)[中创建的客户端证书](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html)。 AWS IoT 将 CA 证书识别为已注册的 CA 证书，注册客户端证书，并将其状态设置为`PENDING_ACTIVATION`。这意味着，已自动注册客户端证书，该证书正在等待激活。客户端证书的状态必须为 `ACTIVE`，然后才能将其用于连接到 AWS IoT。有关激活客户端证书的信息，请参阅 [激活或停用客户端证书](activate-or-deactivate-device-cert.md)。

**注意**  
您可以使用 AWS IoT Core just-in-time注册 (JITR) 功能配置设备，而不必在设备首次连接时发送整个信任链。 AWS IoT Core可以出示 CA 证书，但连接时设备需要发送[服务器名称指示（SNI）](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1)扩展。

当 AWS IoT 自动注册证书或客户端提供`PENDING_ACTIVATION`状态为证书时，会向以下 MQTT 主题 AWS IoT 发布一条消息：

`$aws/events/certificates/registered/caCertificateId`

其中 `caCertificateId` 是颁发客户端证书的 CA 证书的 ID。

发布到该主题的消息具有以下结构：

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

您可以创建一项规则，以侦听此主题并执行一些操作。我们建议您创建一项 Lambda 规则，以验证客户端证书不在证书吊销列表（CRL）中，激活该证书，创建策略并将其附加到证书中。该策略将确定客户端能够访问的资源。如果您创建的策略需要来自连接设备的客户端 ID，您可以使用规则的 clientid() 函数来检索客户端 ID。规则定义示例如下所示：

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

在此示例中，规则订阅 JITR 主题 `$aws/events/certificates/registered/caCertificateID` 并使用 clientid() 函数检索客户端 ID。然后规则将客户端 ID 附加到 JITR 有效载荷。有关规则 clientid() 函数的更多信息，请参阅 [clientid()](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid)。

有关如何创建监听`$aws/events/certificates/registered/caCertificateID`主题并执行这些操作的 Lambda 规则的更多信息，请参阅[just-in-time 注册客户证书](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/)。 AWS IoT

如果在自动注册客户端证书的过程中出现任何错误或异常，则会在日志中 AWS IoT 将事件或消息发送到您的日 CloudWatch 志。有关为您的账户设置日志的更多信息，请参阅 [Amazon CloudWatch 文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)。