本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
X.509 客户端证书
X.509 证书提供了 AWS IoT 对客户端和设备连接进行身份验证的功能。客户端必须先注册客户证书, AWS IoT 然后才能与之通信 AWS IoT。一个客户端证书可以在同一个区域的多个 AWS 账户 s 中注册 AWS 区域 ,以便于在同一区域的设备 AWS 账户之间移动设备。请参阅在多账户注册中使用多个 AWS 账户 X.509 客户端证书了解更多信息。
我们建议为每个设备或客户端提供一个唯一的证书,以便进行精细的客户端管理操作,包括证书吊销。设备和客户端还必须支持证书轮换和更换,以帮助确保在证书过期时平稳运行。
有关使用 X.509 证书支持多个设备的信息,请参阅 设备预调配 以查看 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 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 要求客户端向传输层安全 (SNI) 协议发送服务器名称指示 (TLS) 扩展名
为了便于客户机与 AWS IoT 核心进行安全、一致的连接,X.509 客户端证书必须具备以下内容:
-
已在 AWS IoT Core 中注册。有关更多信息,请参阅 注册客户端证书。
-
状态为
ACTIVE
。有关更多信息,请参阅 激活或停用客户端证书。 -
尚未达到证书到期日期。
您可以创建使用 Amazon Root CA 的客户端证书,并可以使用您自己的由其它证书颁发机构(CA)签发的客户端证书。有关使用 AWS IoT 控制台创建使用 Amazon 根 CA 的证书的更多信息,请参阅创建 AWS IoT 客户证书。有关使用您自己的 X.509 证书的更多信息,请参阅创建您自己的客户端证书。
对于 CA 证书签发的证书过期日期和时间,将在创建 CA 证书时设置。由此生成的 X.509 证书将于 2049 年 12 月 31 UTC 日午夜 AWS IoT 到期(2049-12-31T23:59:59 Z)。
AWS IoT Device Defender 可以对您的 AWS 账户 和支持常见物联网安全最佳实践的设备进行审计。这包括管理由您的 CA 或 Amazon Root CA 签署的 X.509 证书的到期日期。有关管理证书到期日期的更多信息,请参阅设备证书即将到期和 CA 证书即将到期。
在官方 AWS IoT 博客上,如何使用管理物联网设备证书轮换,深入探讨了设备证书轮换的管理和
在多账户注册中使用多个 AWS 账户 X.509 客户端证书
多账户注册能够在同一区域或不同区域的 AWS 账户之间移动设备。您可以在预生产账户中注册、测试和配置设备,然后在生产账户中注册并使用相同的设备和设备证书。您也可以在设备上注册客户端证书,或者在没有注册的 CA 的情况下注册设备证书 AWS IoT。有关更多信息,请参阅注册由未注册的 CA 签名的客户证书 (CLI)。
注意
用于多账户注册的证书在 iot:Data-ATS
、iot:Data
(旧式)、iot:Jobs
和 iot:CredentialProvider
终端节点类型中获得支持。有关 AWS IoT 设备端点的更多信息,请参阅AWS IoT 设备数据和服务端点。
使用多账户注册的设备必须向传输层安全 (SNI) 协议发送服务器名称指示 (TLS) 扩展名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密ECC钥,也可以是来自 NIST P-256、NIST P-384 或 NIST P-521 曲线的密钥。有关更多信息,请参阅CreateCertificateFromCsr《AWS IoT API参考指南》。
支持的密钥算法 AWS IoT
下表显示了如何支持密钥算法:
密钥算法 | 证书签名算法 | TLS版本 | 是否支持? 是或否 |
---|---|---|---|
RSA密钥大小至少为 2048 位 | 全部 | TLS1.2 TLS 1.3 | 是 |
ECCNISTP-256/P-384/P-521 | 全部 | TLS1.2 TLS 1.3 | 是 |
RSA-PSS 密钥大小至少为 2048 位 | 全部 | TLS1.2 | 否 |
RSA-PSS 密钥大小至少为 2048 位 | 全部 | TLS1.3 | 是 |
要使用创建证书 CreateCertificateFromCSR,您可以使用支持的密钥算法为您生成公钥CSR。要使用RegisterCertificate或 RegisterCertificateWithoutCA 注册自己的证书,您可以使用支持的密钥算法为证书生成公钥。
有关更多信息,请参阅安全策略。