本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
X.509 客户证书
X.509 证书提供了 AWS IoT 对客户端和设备连接进行身份验证的功能。客户端必须先注册客户证书, AWS IoT 然后才能与之通信 AWS IoT。一个客户端证书可以在同一个区域的多个 AWS 账户 s 中注册 AWS 区域 ,以便于在同一区域的设备 AWS 账户之间移动设备。请参阅在多个中使用 X.509 客户端证书 AWS 账户 s 使用多账号注册了解更多信息。
我们建议为每个设备或客户端提供一个唯一的证书,以便进行精细的客户端管理操作,包括证书吊销。设备和客户端还必须支持证书轮换和更换,以帮助确保在证书过期时平稳运行。
有关使用 X.509 证书支持多个设备的信息,请参阅设备预调配查看 AWS IoT 支持的不同证书管理和配置选项。
AWS IoT 支持以下类型的 X.509 客户端证书:
-
X.509 由生成的证书 AWS IoT
-
X.509 由注册的 CA 签署的证书 AWS IoT。
-
X.509 由未注册的 CA 签署的证书 AWS IoT。
本节介绍如何在中管理 X.509 证书 AWS IoT。您可以使用 AWS IoT 控制台或 AWS CLI 执行以下证书操作:
有关执行这些操作的 AWS CLI 命令的更多信息,请参阅 AWS IoT CLI 参考
使用 X.509 客户证书
X.509 证书对与的客户端和设备连接进行身份验证 AWS IoT。 X.509与其他识别和身份验证机制相比,证书具有多种优点。 X.509 证书允许将非对称密钥用于设备。例如,您可以将私钥烧录到设备上的安全存储中,这样敏感的加密材料就不会离开设备。 X.509与其他方案(例如用户名和密码或持有者令牌)相比,证书提供了更强的客户端身份验证,因为私钥永远不会离开设备。
AWS IoT 使用 TLS 协议的客户端身份验证模式对客户端证书进行身份验证。TLS 支持适用于多种编程语言和操作系统并且通常用于为数据加密。在 TLS 客户端身份验证中, AWS IoT 请求 X.509 客户端证书并根据证书注册表验证证书的状态。 AWS 账户 然后,它要求客户提供与证书中包含的公钥相对应的私钥的所有权证明。 AWS IoT 要求客户端向传输层安全 (TLS) 协议发送服务器名称指示 (SNI) 扩展
为了便于客户机安全一致地连接到 AWS IoT 核心, X.509客户端证书必须具备以下内容:
-
已在 AWS IoT Core 中注册。有关更多信息,请参阅 注册客户端证书。
-
状态为
ACTIVE。有关更多信息,请参阅 激活或停用客户端证书。 -
尚未达到证书到期日期。
您可以创建使用 Amazon Root CA 的客户端证书,并可以使用您自己的由其它证书颁发机构(CA)签发的客户端证书。有关使用 AWS IoT 控制台创建使用 Amazon 根 CA 的证书的更多信息,请参阅Create AWS IoT 客户端证书。有关使用自己的 X.509 证书的更多信息,请参阅创建您自己的客户端证书。
由 CA 证书签名的证书到期的日期和时间是在创建证书时设置的。 X.509 由生成的证书将于 2049 年 12 月 31 日世界标准时间(20 T23:59:59Z 49-12-31)午夜 AWS IoT 到期。
AWS IoT Device Defender 可以对您的 AWS 账户 和支持常见物联网安全最佳实践的设备进行审计。这包括管理由您的 CA 或 Amazon 根 CA 签署的 X.509 证书的到期日期。有关管理证书的到期日期的更多信息,请参阅设备证书即将到期和 CA 证书即将到期。
在官方 AWS IoT 博客上,如何使用管理物联网设备证书轮换,深入探讨了设备证书轮换的管理和
在多个中使用 X.509 客户端证书 AWS 账户 s 使用多账号注册
Multi-account 通过注册,可以在同一地区或不同区域的设备之间移动设备。 AWS 账户您可以在预生产账户中注册、测试和配置设备,然后在生产账户中注册并使用相同的设备和设备证书。您也可以在设备上注册客户端证书,或者在没有注册的 CA 的情况下注册设备证书 AWS IoT。有关更多信息,请参阅 Register a client certificate signed by an unregistered CA (CLI)(注册由未注册的 CA 签发的客户端证书(CLI))。
注意
用于多账户注册的证书在 iot:Data-ATS、iot:Data(旧式)、iot:Jobs 和 iot:CredentialProvider 端点类型中获得支持。有关 AWS IoT 设备端点的更多信息,请参阅AWS IoT 设备数据和服务端点。
使用多账户注册的设备必须将服务器名称指示 (SNI) 扩展host_name字段中提供完整的端点地址。 AWS IoT AWS IoT 使用中的终端节点地址将连接路由host_name到正确的 AWS IoT 帐户。未发送 host_name 中的有效端点地址的现有设备将继续工作,但它们将无法使用需要此信息的特征。有关 SNI 扩展以及如何识别 host_name 字段的端点地址的更多信息,请参阅。运输安全 AWS IoT Core
使用多账户注册
-
您可以向 CA 注册设备证书。您可以在
SNI_ONLY模式下在多个账户中注册签名 CA,并使用该 CA 向多个账户注册相同的客户端证书。有关更多信息,请参阅 在 SNI_ONLY 模式下注册 CA 证书(CLI)- 建议。 -
您可以在没有 CA 的情况下注册设备证书。请参阅注册由未注册的 CA(CLI)签发的客户端证书。注册 CA 是可选的。您无需注册签署设备证书的 CA AWS IoT。
支持的证书签名算法 AWS IoT
AWS IoT 支持以下证书签名算法:
-
SHA256WITHRSA
-
SHA384WITHRSA
-
SHA512WITHRSA
-
SHA256WITHRSAANDMGF1 (RSASSA-PSS)
-
SHA384WITHRSAANDMGF1 (RSASSA-PSS)
-
SHA512WITHRSAANDMGF1 (RSASSA-PSS)
-
DSA_WITH_SHA256
-
ECDSA-WITH-SHA256
-
ECDSA-WITH-SHA384
-
ECDSA-WITH-SHA512
有关证书身份验证和安全性的更多信息,请参阅设备证书密钥质量。
注意
证书签名请求(CSR)必须包含公有密钥。密钥可以是长度至少为 2,048 位的 RSA 密钥,也可以是来自 NIST P-256、NIST 或 NIST 曲线的 ECC 密钥。 P-384 P-521 有关更多信息,请参阅 CreateCertificateFromCsr API 参考指南 中的 AWS IoT 。
支持的密钥算法 AWS IoT
下表显示了如何支持密钥算法:
| 密钥算法 | 证书签名算法 | TLS 版本 | 是否支持? 是或否 |
|---|---|---|---|
| 密钥大小至少为 2048 位的 RSA | 全部 | TLS 1.2 TLS 1.3 | 是 |
| ECC NIST P-256/P-384/P-521 | 全部 | TLS 1.2 TLS 1.3 | 是 |
| RSA-PSS 密钥大小至少为 2048 位 | 全部 | TLS 1.2 | 否 |
| RSA-PSS 密钥大小至少为 2048 位 | 全部 | TLS 1.3 | 是 |
要使用创建证书 CreateCertificateFromCSR,您可以使用支持的密钥算法为您的 CSR 生成公钥。要使用RegisterCertificate或注册自己的证书 RegisterCertificateWithoutCA,您可以使用支持的密钥算法为证书生成公钥。
有关更多信息,请参阅安全策略。