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

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

X.509 客户端证书

X.509 证书提供 AWS IoT 能够对客户端和设备连接进行身份验证。必须向注册客户证书 AWS IoT 在客户可以与之通信之前 AWS IoT。 一个客户证书可以注册多个 AWS 账户 s 在同一个地方 AWS 区域 便于在您的设备之间移动 AWS 账户 s 在同一区域。请参阅在多个中使用 X.509 客户端证书 AWS 账户 s 使用多账号注册了解更多信息。

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

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

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

  • 由注册的 CA 签署的 X.509 证书 AWS IoT.

  • 由未注册的 CA 签署的 X.509 证书 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 要求客户端向传输层安全 (SNI) 协议发送服务器名称指示 (TLS) 扩展名。有关配置SNI扩展的更多信息,请参阅运输安全 AWS IoT Core

为了便于客户机安全一致地连接到 AWS IoT core,X.509 客户端证书必须具备以下内容:

您可以创建使用 Amazon Root CA 的客户端证书,并可以使用您自己的由其它证书颁发机构(CA)签发的客户端证书。有关使用方法的更多信息 AWS IoT 控制台来创建使用 Amazon 根 CA 的证书,请参阅创建 AWS IoT 客户证书。有关使用您自己的 X.509 证书的更多信息,请参阅创建您自己的客户端证书

对于 CA 证书签发的证书过期日期和时间,将在创建 CA 证书时设置。由生成的 X.509 证书 AWS IoT 将于 2049 年 12 月 31 UTC 日午夜到期(2049-12-31T23:59:59 Z)。

AWS IoT Device Defender 可以对你进行审计 AWS 账户 以及支持常见物联网安全最佳实践的设备。这包括管理由您的 CA 或 Amazon Root CA 签署的 X.509 证书的到期日期。有关管理证书到期日期的更多信息,请参阅设备证书即将到期和 CA 证书即将到期

在官方网站上 AWS IoT 博客,在 “如何使用管理物联网设备证书轮换” 中深入探讨了设备证书轮换的管理和安全最佳实践 AWS IoT.

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

多账户注册使您能够在您的设备之间移动设备 AWS 账户位于同一区域或不同区域。您可以在预生产账户中注册、测试和配置设备,然后在生产账户中注册并使用相同的设备和设备证书。您也可以在设备上注册客户端证书,或者在没有注册的 CA 的情况下注册设备证书 AWS IoT。 有关更多信息,请参阅注册由未注册的 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 account。未发送 host_name 中的有效终端节点地址的现有设备将继续工作,但它们将无法使用需要此信息的特征。有关SNI扩展模块的更多信息以及如何识别该host_name字段的终端节点地址,请参阅运输安全 AWS IoT Core

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

  2. 您可以在没有 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。要使用RegisterCertificateRegisterCertificateWithoutCA 注册自己的证书,您可以使用支持的密钥算法为证书生成公钥。

有关更多信息,请参阅安全策略