创建和配置客户管理的域 - AWS IoT Core

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

创建和配置客户管理的域

域配置允许您指定要连接的自定义完全限定域名 (FQDN) AWS IoT Core。使用客户管理的域名(也称为自定义域名)有很多好处:您可以出于品牌推广目的向客户公开自己的域名或公司自己的域名;您可以轻松地将自己的域名更改为指向新的经纪商;您可以支持多租户为同一域中的不同域名的客户提供服务 AWS 账户;您可以管理自己的服务器证书详细信息,例如用于签署证书的根证书颁发机构 (CA)、签名算法、证书链的深度以及证书链的生命周期证书。

使用自定义域设置域配置的工作流包括以下三个阶段。

在证书管理器中注册服务器 AWS 证书

在使用自定义域创建域配置之前,必须在 AWS Certificate Manager (ACM) 中注册服务器证书链。您可以使用以下三种类型的服务器证书。

注意

AWS IoT Core 如果证书包含在 Mozilla 的可信 ca-bundle 中,则认为该证书由公共 C A 签名。

证书要求

有关将证书导入的要求,请参阅导入证书的先决条件ACM。除了这些要求之外, AWS IoT Core 还添加了以下要求。

  • 树叶证书必须包含扩展密钥用法 x509 v3 扩展,其值为 serverAuth(TLSWeb 服务器身份验证)。如果您向申请证书ACM,则会自动添加此扩展模块。

  • 最大证书链深度为 5 个证书。

  • 最大证书链大小为 16KB。

  • 支持的加密算法和密钥大小包括 RSA 2048 位 (RSA_2048) 和 256 位 (ec_Prime ECDSA 256v1)。

对多个域使用一个证书

如果您计划使用一个证书来覆盖多个子域名,请在公用名 (CN) 或主题备用名 () 字段中使用通配符域名。SAN例如,使用 *.iot.example.com 涵盖 cover dev.iot.example.com、qa.iot.example.com 和 prod.iot.example.com。每个域都FQDN需要自己的域配置,但多个域配置可以使用相同的通配符值。要用作自定义域名FQDN的 CN 或SAN必填内容。如果SANs存在,则会忽略 CN,并且SAN必须FQDN包含要用作自定义域的 CN。此涵盖范围可以是完全匹配或通配符匹配。在验证通配符证书并将其注册到账户后,将阻止区域中的其他账户创建与证书重叠的自定义域。

以下各部分介绍如何获取每种类型的证书。每个证书资源都需要一个注册的 Amazon 资源名称 (ARN)ACM,以便您在创建域配置时使用该名称。

ACM-生成的公共证书

您可以使用为自定义域生成公有证书RequestCertificateAPI。以这种方式生成证书时,将ACM验证您对自定义域的所有权。有关更多信息,请参阅 AWS Certificate Manager 用户指南中的请求公有证书

由公有 CA 签名的外部证书

如果您已经拥有由公共 CA(包含在 Mozilla 可信 ca-bundle 中的 CA)签署的服务器证书,则可以使用将ACM证书链直接导入。ImportCertificateAPI要了解有关此任务以及先决条件和证书格式要求的更多信息,请参阅导入证书

由私有 CA 签名的外部证书

如果您已经拥有由私有 CA 签名或自签名的服务器证书,则可以使用该证书来创建域配置,但您还必须在中创建额外的公共证书ACM来验证您的域的所有权。为此,请ACM使用注册您的服务器证书链ImportCertificateAPI。要了解有关此任务以及先决条件和证书格式要求的更多信息,请参阅导入证书

创建验证证书

将证书导入到后ACM,使用为您的自定义域生成公有证书RequestCertificateAPI。以这种方式生成证书时,将ACM验证您对自定义域的所有权。有关更多信息,请参阅请求公有证书。创建域配置时,请使用此公有证书作为验证证书。

创建域配置

您可以使用在自定义域上创建可配置的终端节点CreateDomainConfigurationAPI。自定义域的域配置包括以下内容:

  • domainConfigurationName

    用于标识域配置的用户定义名称。以 IoT: 开头的域配置名称将针对默认终端节点保留,不能使用。此外,此值必须是您的唯一值 AWS 区域。

  • domainName

    您的设备用来连接的 AWS IoT Core。FQDN AWS IoT Core 利用服务器名称指示 (SNI) TLS 扩展名来应用域配置。设备在连接时必须使用此扩展名,并传递与域配置中指定的域名相同的服务器名称。

  • serverCertificateArns

    您注册ARN的服务器证书链的ACM。 AWS IoT Core 目前仅支持一个服务器证书。

  • validationCertificateArn

    您在中ACM生成的用于验证自定义域名所有权的公共证书。ARN如果您使用公开签名或ACM生成的服务器证书,则不需要此参数。

  • defaultAuthorizerName (optional)

    要在端点上使用的自定义授权方的名称。

  • allowAuthorizerOverride

    一个布尔值,用于指定设备是否可以通过在HTTP请求标头中指定不同的授权方来覆盖默认授权方。如果为 defaultAuthorizerName 指定了值,则需要此值。

  • serviceType

    AWS IoT Core 目前仅支持DATA服务类型。如果指定DATA,则 AWS IoT 返回终端节点类型为的终端节点iot:Data-ATS

  • TlsConfig(可选)

    指定域TLS配置的对象。有关更多信息,请参阅 在域配置中配置TLS设置

  • serverCertificateConfig(可选)

    指定域的服务器证书配置的对象。有关更多信息,请参阅 用于装OCSP订的服务器证书配置

以下 AWS CLI 命令为 iot .example.com 创建域配置。

aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" --service-type "DATA" --domain-name "iot.example.com" --server-certificate-arns serverCertARN --validation-certificate-arn validationCertArn
注意

创建域配置后,最多可能需要 60 分钟才能 AWS IoT Core 提供您的自定义服务器证书。

有关更多信息,请参阅 管理域配置

创建DNS记录

注册服务器证书链并创建域配置后,请创建一条DNS记录,以便您的自定义域名指向某个 AWS IoT 域。此记录必须指向类型为的 AWS IoT 端点iot:Data-ATS。您可以使用获取终端节点DescribeEndpointAPI。

以下 AWS CLI 命令显示如何获取终端节点。

aws iot describe-endpoint --endpoint-type iot:Data-ATS

获取iot:Data-ATS终端节点后,创建从您的自定义域名到该 AWS IoT 终端节点的CNAME记录。如果您在同一个域中创建多个自定义域名 AWS 账户,请将它们别名为同一个iot:Data-ATS终端节点。

故障排除

如果您在将设备连接到自定义域时遇到问题,请确保该域 AWS IoT Core 已接受并应用您的服务器证书。您可以使用 AWS IoT Core 控制台或,验证是否 AWS IoT Core 已接受您的证书 AWS CLI。

要使用 AWS IoT Core 控制台,请导航到 “设置” 页面并选择域配置名称。在 Server certificate details(服务器证书详细信息)部分中,检查状态和状态详细信息。如果证书无效,请将其替换为ACM符合上一节中列出的证书要求的证书。如果证书相同ARN,则 AWS IoT Core 会自动领取并应用。

要使用检查证书状态 AWS CLI,请致电DescribeDomainConfigurationAPI并指定您的域配置名称。

注意

如果您的证书无效,则 AWS IoT Core 将继续提供最后一个有效证书。

您可以使用以下 openssl 命令检查端点上正在提供哪些证书。

openssl s_client -connect custom-domain-name:8883 -showcerts -servername custom-domain-name