

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

# X.509 客户端证书
<a name="x509-client-certs"></a>

X.509 证书提供了 AWS IoT 对客户端和设备连接进行身份验证的功能。客户端必须先注册客户证书， AWS IoT 然后才能与之通信 AWS IoT。一个客户端证书可以在同一个区域的多个 AWS 账户 s 中注册 AWS 区域 ，以便于在同一区域的设备 AWS 账户之间移动设备。请参阅[在多账户注册中使用多个 AWS 账户 X.509 客户端证书](#multiple-account-cert)了解更多信息。

我们建议为每个设备或客户端提供一个唯一的证书，以便进行精细的客户端管理操作，包括证书吊销。设备和客户端还必须支持证书轮换和更换，以帮助确保在证书过期时平稳运行。

有关使用 X.509 证书支持多个设备的信息，请参阅 [设备预调配](iot-provision.md) 以查看 AWS IoT 支持的不同证书管理和预调配选项。

**AWS IoT 支持以下类型的 X.509 客户端证书：**
+  由... 生成的 X.509 证书 AWS IoT
+  由注册的 CA 签署的 X.509 证书。 AWS IoT
+  由未注册到 AWS IoT的 CA 签发的 X.509 证书。

本节介绍如何在 AWS IoT中管理 X.509 证书。您可以使用 AWS IoT 控制台或 AWS CLI 执行以下证书操作：
+ [创建 AWS IoT 客户证书](device-certs-create.md)
+ [创建您自己的客户端证书](device-certs-your-own.md)
+ [注册客户端证书](register-device-cert.md)
+ [激活或停用客户端证书](activate-or-deactivate-device-cert.md)
+ [吊销客户端证书](revoke-ca-cert.md)

有关执行这些操作的 AWS CLI 命令的更多信息，请参阅 [AWS IoT CLI 参考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html)。

## 使用 X.509 客户端证书
<a name="x509-client-cert-basics"></a>

X.509 证书对与的客户端和设备连接进行身份验证。 AWS IoT与其它身份和身份验证机制相比，X.509 证书具有多项优势。有了 X.509 证书，可以将非对称密钥用于设备。例如，您可以将私有密钥刻录到设备上的安全存储中，这样敏感的加密材料永远不会离开设备。X.509 证书可以通过用户名和密码或持有者令牌等其它方案提供更可靠的客户端身份验证，因为私有密钥永远不会离开设备。

AWS IoT 使用 TLS 协议的客户端身份验证模式对客户端证书进行身份验证。TLS 支持适用于多种编程语言和操作系统并且通常用于为数据加密。在 TLS 客户端身份验证中， AWS IoT 请求 X.509 客户端证书并根据证书注册表验证证书的状态。 AWS 账户 然后，它要求客户提供与证书中包含的公钥相对应的私钥的所有权证明。 AWS IoT 要求客户端向传输层安全 [(TLS) 协议发送服务器名称指示 (SNI) 扩展](https://tools.ietf.org/html/rfc3546#section-3.1)。有关配置 SNI 扩展的更多信息，请参阅 [运输安全 AWS IoT Core](transport-security.md)。

为了便于客户机与 AWS IoT 核心进行安全、一致的连接，X.509 客户端证书必须具备以下内容：
+ 已在 AWS IoT Core 中注册。有关更多信息，请参阅 [注册客户端证书](register-device-cert.md)。
+ 状态为 `ACTIVE`。有关更多信息，请参阅 [激活或停用客户端证书](activate-or-deactivate-device-cert.md)。
+ 尚未达到证书到期日期。

您可以创建使用 Amazon Root CA 的客户端证书，并可以使用您自己的由其它证书颁发机构（CA）签发的客户端证书。有关使用 AWS IoT 控制台创建使用 Amazon 根 CA 的证书的更多信息，请参阅[创建 AWS IoT 客户证书](device-certs-create.md)。有关使用您自己的 X.509 证书的更多信息，请参阅 [创建您自己的客户端证书](device-certs-your-own.md)。

对于 CA 证书签发的证书过期日期和时间，将在创建 CA 证书时设置。由此生成的 X.509 证书将于世界标准时间 2049 年 12 月 31 日午夜 AWS IoT 到期（2049-12-31T23：59:59 Z）。

AWS IoT Device Defender 可以对您的 AWS 账户 和支持常见物联网安全最佳实践的设备进行审计。这包括管理由您的 CA 或 Amazon Root CA 签署的 X.509 证书的到期日期。有关管理证书的到期日期的更多信息，请参阅[设备证书即将到期](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html)和 [CA 证书即将到期](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html)。

在官方 AWS IoT 博客上，[如何使用管理物联网设备证书轮换，深入探讨了设备证书轮换的管理和](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/)安全最佳实践 AWS IoT。

## 在多账户注册中使用多个 AWS 账户 X.509 客户端证书
<a name="multiple-account-cert"></a>

多账户注册能够在同一区域或不同区域的 AWS 账户之间移动设备。您可以在预生产账户中注册、测试和配置设备，然后在生产账户中注册并使用相同的设备和设备证书。您也可以在设备上注册客户端证书，或者在没有注册的 CA 的情况下注册设备证书 AWS IoT。有关更多信息，请参阅 [Register a client certificate signed by an unregistered CA (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli)（注册由未注册的 CA 签发的客户端证书（CLI））。

**注意**  
用于多账户注册的证书在 `iot:Data-ATS`、`iot:Data`（旧式）、`iot:Jobs` 和 `iot:CredentialProvider` 端点类型中获得支持。有关 AWS IoT 设备端点的更多信息，请参阅[AWS IoT 设备数据和服务端点](iot-connect-devices.md#iot-connect-device-endpoints)。

使用多账户注册的设备必须将[服务器名称指示 (SNI) 扩展](https://tools.ietf.org/html/rfc3546#section-3.1)发送到传输层安全 (TLS) 协议，并在连接时在`host_name`字段中提供完整的端点地址。 AWS IoT AWS IoT 使用中的终端节点地址将连接路由`host_name`到正确的 AWS IoT 帐户。未发送 `host_name` 中的有效端点地址的现有设备将继续工作，但它们将无法使用需要此信息的特征。有关 SNI 扩展以及如何识别 `host_name` 字段的端点地址的更多信息，请参阅。[运输安全 AWS IoT Core](transport-security.md)

**使用多账户注册**

1. 您可以向 CA 注册设备证书。您可以在 `SNI_ONLY` 模式下在多个账户中注册签名 CA，并使用该 CA 向多个账户注册相同的客户端证书。有关更多信息，请参阅 [在 SNI\$1ONLY 模式下注册 CA 证书（CLI）- 建议](manage-your-CA-certs.md#register-CA-cert-SNI-cli)。

1. 您可以在没有 CA 的情况下注册设备证书。请参阅[注册由未注册的 CA（CLI）签发的客户端证书](manual-cert-registration.md#manual-cert-registration-noca-cli)。注册 CA 是可选的。您无需注册签署设备证书的 CA AWS IoT。

## 支持的证书签名算法 AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT 支持以下证书签名算法：
+ SHA256WITHRSA
+ SHA384WITHRSA
+ SHA512WITHRSA
+ SHA256WITHRSAANDMGF1 (RSSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSSASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSSASSA-PSS)
+ DSA\$1WITH\$1 SHA256
+ ECDSA-with-SHA256
+ ECDSA-with-SHA384
+ ECDSA-with-SHA512

有关证书身份验证和安全性的更多信息，请参阅[设备证书密钥质量](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html)。

**注意**  
证书签名请求（CSR）必须包含公有密钥。该密钥可以是长度至少为 2048 位的 RSA 密钥，或者是来自 NIST P-256、NIST P-384 或 NIST P-521 曲线的 ECC 密钥。有关更多信息，请参阅 [CreateCertificateFromCsr API 参考指南](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) 中的 *AWS IoT *。

## 支持的密钥算法 AWS IoT
<a name="x509-cert-key-algorithms"></a>

下表显示了如何支持密钥算法：


****  

| 密钥算法 | 证书签名算法 | TLS 版本 | 是否支持？ 是或否 | 
| --- | --- | --- | --- | 
| 密钥大小至少为 2048 位的 RSA | 全部 | TLS 1.2 TLS 1.3 | 是 | 
| ECC NIST P-256/P-384/P-521 | 全部 | TLS 1.2 TLS 1.3 | 是 | 
| 密钥大小至少为 2048 位的 RSA-PSS | 全部 | TLS 1.2 | 否 | 
| 密钥大小至少为 2048 位的 RSA-PSS | 全部 | TLS 1.3 | 是 | 

要使用 [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html) 创建证书，您可以使用支持的密钥算法为您的 CSR 生成公钥。要使用[RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)或 [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html) 注册自己的证书，您可以使用支持的密钥算法为证书生成公钥。

有关更多信息，请参阅[安全策略](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table)。