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

创建和配置自定义域

此功能目前处于公开测试阶段,仅在美国东部(弗吉尼亚北部)区域中可用。

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

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

在 AWS Certificate Manager 中注册服务器证书

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

注意

如果证书包含在 Mozilla 的受信任 ca-bundle 中,则 AWS IoT 将该证书视为已由公有 CA 签署。

对多个域使用一个证书

如果您计划使用一个证书来涵盖多个子域,请在公用名 (CN) 或使用者备用名称 (SAN) 字段中使用通配符域。例如,使用 *.iot.example.com 涵盖 cover dev.iot.example.com、qa.iot.example.com 和 prod.iot.example.com。每个 FQDN 都需要自己的域配置,但多个域配置可以使用同一个通配符值。CN 或 SAN 必须涵盖要用作自定义域的 FQDN。此涵盖范围可以是完全匹配或通配符匹配。

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

ACM 生成的公有证书

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

由公有 CA 签名的外部证书

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

由私有 CA 签名的外部证书

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

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

创建域配置

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

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

    注意

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

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

    注意

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

  • serverCertificateArns – 您使用 ACM 注册的服务器证书链的 ARN。测试版仅支持一个服务器证书。

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

  • defaultAuthorizerName – 要在终端节点上使用的自定义授权方的名称。

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

  • serviceType – 可能的值为 DATACREDENTIAL_PROVIDERJOB。如果指定 DATA,则 AWS IoT 返回终端节点类型为 iot:Data-Beta 的终端节点。这是可配置的终端节点测试版的特殊终端节点类型。您无法创建可配置的 iot:Data (VeriSign) 终端节点。

    注意

    AWS IoT Core 目前仅支持 DATA 服务类型。

以下 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
注意

创建您的域配置后,它可能需要长达 15 分钟才能生效,直到 AWS IoT 提供您的自定义服务器证书。

创建 DNS 记录

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

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

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

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