创建和配置自定义域 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建和配置自定义域

域配置允许您指定要连接到 Amazon IoT 的自定义完全限定域名 (FQDN)。通过自定义域,您可以管理自己的服务器证书,从而可以管理详细信息,例如用于签署证书的根证书颁发机构 (CA)、签名算法、证书链深度和证书的生命周期。

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

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

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

注意

如果证书包含在 Mozilla 的信任 ca-bundle 中,则 Amazon IoT 会考虑由公共 CA 签署的证书。

证书要求

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

  • 叶证书必须包含扩展密钥用法 x509 v3 扩展,且其值应为 serverAuth(TLS Web 服务器身份验证)。如果您从 ACM 请求证书,则会自动添加此扩展。

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

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

对多个域使用一个证书

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

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

ACM 生成的公有证书

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

由公有 CA 签名的外部证书

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

由私有 CA 签名的外部证书

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

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

创建域配置

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

  • domainConfigurationName — 用于标识域配置的用户定义名称。

    注意

    IoT: 开头的域配置名称将针对默认终端节点保留,不能使用。此外,此值对您的 Amazon Web Services 区域 必须是唯一的。

  • domainName – 您的设备用于连接到 Amazon IoT 的 FQDN。

    注意

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

  • serverCertificateArns — 向 ACM 注册的服务器证书链的 ARN。Amazon IoT Core 当前仅支持一个服务器证书。

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

  • defaultAuthorizerName(可选) — 要在端点上使用的自定义授权方的名称。

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

  • serviceType — Amazon IoT 目前仅支持 DATA 服务类型。如果指定 DATA,则 Amazon IoT 返回端点类型为 iot:Data-ATS 的端点。

以下 Amazon 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 分钟才能生效,直到 Amazon IoT 提供您的自定义服务器证书。

创建 DNS 记录

注册服务器证书链并创建域配置后,请创建 DNS 记录,以便您的自定义域指向 Amazon IoT 域。此记录必须指向 iot:Data-ATS 类型的 Amazon IoT 终端节点。您可以使用 DescribeEndpoint API 获取测试端点。

以下 Amazon CLI 命令显示了如何获取端点。

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

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

问题排查

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

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

若要通过使用 Amazon CLI 检查证书状态,调用 DescribeDomainConfiguration API 并指定您的域配置名称。

注意

如果您的证书无效,Amazon IoT Core 将继续提供上一个有效的证书。

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

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