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

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

创建和配置自定义域

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

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

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

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

注意

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

证书要求

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

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

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

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

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

对多个域使用一个证书

如果您计划使用一个证书来涵盖多个子域,请在公用名 (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 生成的公有证书

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

由公有 CA 签名的外部证书

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

由私有 CA 签名的外部证书

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

创建验证证书

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

创建域配置

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

  • domainConfigurationName

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

  • domainName

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

  • serverCertificateArns

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

  • validationCertificateArn

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

  • defaultAuthorizerName (optional)

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

  • allowAuthorizerOverride

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

  • serviceType

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

  • TlsConfig(可选)

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

  • serverCertificateConfig(可选)

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

以下 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 Core 提供您的自定义服务器证书。

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

创建 DNS 记录

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

以下 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 IoT Core 已接受您的证书 Amazon CLI。

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

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

注意

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

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

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