X.509 客户端证书 - AWS IoT Core

X.509 客户端证书

X.509 证书向 AWS IoT 提供对客户端和设备连接进行身份验证的功能。客户端证书必须先注册到 AWS IoT,然后客户端才能与 AWS IoT 进行通信。可以在同一AWS 区域的多个AWS 账户中注册客户端证书,以便在同一区域的AWS 账户之间移动设备。参阅 通过多账户注册在多个AWS 账户中使用 X.509 客户端证书 了解更多信息。

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

有关使用 X.509 证书支持多个设备的信息,请参阅 设备预调配 以查看 AWS IoT 支持的不同证书管理和预调配选项。

AWS IoT 支持以下类型的 X.509 客户端证书:
  • AWS IoT 生成的 X.509 证书

  • 由注册到 AWS IoT 的 CA 签发的 X.509 证书。

  • 由未注册到 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) 协议。有关配置 SNI 扩展的更多信息,请参阅 AWS IoT 中的传输安全

X.509 证书可以根据可信证书颁发机构 (CA) 进行验证。您可以创建使用 Amazon Root CA 的客户端证书,也可以使用由其它 CA 签发的自己的客户端证书。有关使用您自己的 X.509 证书的更多信息,请参阅创建您自己的客户端证书

对于 CA 证书签发的证书过期日期和时间,将在创建 CA 证书时设置。AWS IoT 生成的 X.509 证书在 UTC 2049 年 12 月 31 日(2049-12-31T23:59:59Z) 到期。有关使用 AWS IoT 控制台创建使用 Amazon Root CA 的证书的更多信息,请参阅创建 AWS IoT 客户端证书

通过多账户注册在多个AWS 账户中使用 X.509 客户端证书

多账户注册能够在同一区域或不同区域的 AWS 账户 之间移动设备。您可以在预生产账户中注册、测试和配置设备,然后在生产账户中注册并使用相同的设备和设备证书。您还可以在设备上注册客户端证书,或在没有已向 AWS IoT 注册的 CA 的情况下注册设备证书。有关更多信息,请参阅 Register a client certificate signed by an unregistered CA (CLI)(注册由未注册的 CA 签发的客户端证书(CLI))。

注意

用于多账户注册的证书在 iot:Data-ATSiot:Data(旧式)、iot:Jobsiot:CredentialProvider 终端节点类型中获得支持。有关 AWS IoT 设备终端节点的更多信息,请参阅 AWS IoT 设备数据和服务终端节点

使用多账户注册的设备必须将服务器名称指示 (SNI) 扩展发送到传输层安全性 (TLS) 协议,并在其连接到 host_name 时在 AWS IoT 字段提供完整端点地址。AWS IoT 会使用 host_name 中的端点地址将连接路由到正确的 AWS IoT 账户。未发送 host_name 中的有效终端节点地址的现有设备将继续工作,但它们将无法使用需要此信息的功能。有关 SNI 扩展以及如何识别 host_name 字段的终端节点地址的更多信息,请参阅AWS IoT 中的传输安全

使用多账户注册
  1. 您可以向 CA 注册设备证书。您可以在 SNI_ONLY 模式下在多个账户中注册签名 CA,并使用该 CA 向多个账户注册相同的客户端证书。有关更多信息,请参阅在 SNI_ONLY 模式下注册 CA 证书(CLI)

  2. 您可以在没有 CA 的情况下注册设备证书。请参阅注册由未注册的 CA (CLI) 签发的客户端证书。注册 CA 是可选的。您不需要向 AWS IoT 注册已对设备证书进行签名的 CA。

AWS IoT 支持的证书签名算法

AWS IoT 支持以下证书签名算法:

  • SHA256WITHRSA

  • SHA384WITHRSA

  • SHA512WITHRSA

  • DSA_WITH_SHA256

  • ECDSA-WITH-SHA256

  • ECDSA-WITH-SHA384

  • ECDSA-WITH-SHA512

注意

证书签名请求 (CSR) 必须包含一个公有密钥,该密钥可以是长度至少为 2048 位的 RSA 密钥,或者是来自 NIST P-256、NIST P-384 或 NIST P-512 曲线的 ECC 密钥。有关更多信息,请参阅 AWS IoT API 参考指南 中的 CreateCertificateFromCsr API。