

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立和設定客戶受管網域
<a name="iot-custom-endpoints-configurable-custom"></a>

網域組態可讓您指定自訂完整網域名稱 (FQDN) 來連線至 AWS IoT Core。使用客戶受管網域 （也稱為自訂網域） 有許多好處： 您可以公開自有網域或公司自有網域給客戶用於品牌用途；您可以輕鬆變更自有網域以指向新的代理程式；您可以支援多租用戶，為在同一範圍內具有不同網域的客戶提供服務 AWS 帳戶；而且您可以管理自己的伺服器憑證詳細資訊，例如用來簽署憑證的根憑證授權機構 (CA)、簽章演算法、憑證鏈深度和憑證生命週期。

使用自訂網域來設定網域組態的工作流程包含下列三個階段。

1. [在 中註冊伺服器憑證 AWS Certificate Manager](#iot-custom-endpoints-configurable-custom-register-certificate)

1. [建立網域組態](#iot-custom-endpoints-configurable-custom-domain-config)

1. [建立 DNS 記錄](#iot-custom-endpoints-configurable-custom-dns)

## 在憑證管理器中註冊伺服器 AWS 憑證
<a name="iot-custom-endpoints-configurable-custom-register-certificate"></a>

使用自訂網域建立網域組態之前，您必須在 [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) 中註冊伺服器憑證鏈。您可以使用下列三種類型的伺服器憑證。
+ [ACM 產生的公有憑證](#iot-custom-endpoints-configurable-custom-register-certificate-acm)
+ [由公有 CA 簽署的外部憑證](#iot-custom-endpoints-configurable-custom-register-certificate-pubext)
+ [由私有 CA 簽署的外部憑證](#iot-custom-endpoints-configurable-custom-register-certificate-privext)

**注意**  
AWS IoT Core 如果憑證包含在 [Mozilla 的信任 ca-bundle](https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt?raw=1) 中，則 會將憑證視為由公有 CA 簽署。

### 憑證需求
<a name="certificate-requirements"></a>

如需將憑證匯入至 ACM 的需求，請參閱[匯入憑證的先決條件](/acm/latest/userguide/import-certificate-prerequisites.html)。除了這些需求之外， AWS IoT Core 會新增下列需求。
+ 分葉憑證必須包含值為 **serverAuth** (TLS Web Server Authentication) 的**擴充金鑰用量** x509 v3 延伸。如果您從 ACM 請求憑證，則會自動新增此延伸。
+ 憑證鏈深度上限為 5 個憑證。
+ 憑證鏈大小上限為 16KB。
+ 支援的加密演算法和金鑰大小包括 RSA 2048 位元 (RSA\_2048) 和 ECDSA 256 位元 (EC\_prime256v1)。

### 針對多個網域使用一個憑證
<a name="one-certificate-for-multiple-domains"></a>

如果您打算使用一個憑證來涵蓋多個子網域，請在通用名稱 (CN) 或主體替代名稱 (SAN) 欄位中使用萬用字元網域。例如，使用 **\*.iot.example.com** 來涵蓋 dev.iot.example.com、qa.iot.example.com 和 prod.iot.example.com。每個 FQDN 都需要自己的網域組態，但多個網域組態可以使用相同的萬用字元值。CN 或 SAN 必須涵蓋您要用作自訂網域的 FQDN。如果 SAN 存在，CN 會遭忽略，且 SAN 必須涵蓋您要用作自訂網域的 FQDN。此涵蓋範圍可以是完全相符或萬用字元相符。驗證萬用字元憑證並向帳戶註冊後，該區域中的其他帳戶將無法建立與憑證重疊的自訂網域。

下列各節說明如何取得每種類型的憑證。每個憑證資源都需要向 ACM 註冊的 Amazon 資源名稱 (ARN)，您在建立網域組態時會使用此 ARN。

### ACM 產生的公有憑證
<a name="iot-custom-endpoints-configurable-custom-register-certificate-acm"></a>

您可以使用 [RequestCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_RequestCertificate.html) API，為您的自訂網域產生公有憑證。當您以這種方式產生憑證時，ACM 會驗證您對自訂網域的擁有權。如需詳細資訊，請參閱《AWS Certificate Manager 使用者指南》**中的[請求公有憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html)。

### 由公有 CA 簽署的外部憑證
<a name="iot-custom-endpoints-configurable-custom-register-certificate-pubext"></a>

如果您已經擁有由公有 CA (此 CA 包含在 Mozilla 信任的 ca-bundle 中) 簽署的伺服器憑證，您可以使用 [ImportCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_ImportCertificate.html) API，將憑證鏈直接匯入至 ACM。若要進一步了解此任務以及必要條件和憑證格式需求，請參閱[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。

### 由私有 CA 簽署的外部憑證
<a name="iot-custom-endpoints-configurable-custom-register-certificate-privext"></a>

如果您已經擁有由私有 CA 簽署或自我簽署的伺服器憑證，則可以使用憑證來建立您的網域組態，但也必須在 ACM 中建立額外的公有憑證，以驗證網域的擁有權。若要這樣做，請在 ACM 使用 [ImportCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_ImportCertificate.html) API 來註冊您的伺服器憑證鏈。若要進一步了解此任務以及必要條件和憑證格式需求，請參閱[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。

### 建立驗證憑證
<a name="iot-custom-endpoints-configurable-create-validation-certificate"></a>

將您的憑證匯入至 ACM 之後，請使用 [RequestCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_RequestCertificate.html) API，為您的自訂網域產生公有憑證。當您以這種方式產生憑證時，ACM 會驗證您對自訂網域的擁有權。如需詳細資訊，請參閱[請求公有憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html)。建立網域組態時，請使用此公有憑證作為您的驗證憑證。

## 建立網域組態
<a name="iot-custom-endpoints-configurable-custom-domain-config"></a>

您可以使用 [CreateDomainConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateDomainConfiguration.html) API，在自訂網域上建立可設定端點。自訂網域的網域組態包含下列項目：
+ `domainConfigurationName`

  識別網域組態的使用者定義名稱。以 `IoT:` 開頭的網域組態名稱會保留給預設端點，且無法使用。此外，此值對您的 必須是唯一的 AWS 區域。
+ `domainName`

  裝置用來連線的 FQDN AWS IoT Core。 AWS IoT Core 會利用伺服器名稱指示 (SNI) TLS 延伸來套用網域組態。裝置在連線並傳遞與網域組態中指定之網域名稱相同的伺服器名稱時，必須使用此延伸。
+ `serverCertificateArns`

  您向 ACM 註冊的伺服器憑證鏈 ARN。 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 設定](iot-endpoints-tls-config.md)。
+ `serverCertificateConfig` (選用)

  指定網域之伺服器憑證組態的物件。如需詳細資訊，請參閱[OCSP 裝訂的伺服器憑證組態](iot-custom-endpoints-cert-config.md)。

下列 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 才會提供您的自訂伺服器憑證。

如需詳細資訊，請參閱[管理網域組態](iot-custom-endpoints-managing.md)。

## 建立 DNS 記錄
<a name="iot-custom-endpoints-configurable-custom-dns"></a>

在註冊您的伺服器憑證鏈並建立您的網域組態之後，請建立 DNS 記錄，讓您的自訂網域可以指向 AWS IoT 網域。此記錄必須指向 類型的 AWS IoT 端點`iot:Data-ATS`。您可以使用 [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html) API 來取得端點。

下列 AWS CLI 命令顯示如何取得您的端點。

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

取得`iot:Data-ATS`端點後，請建立從自訂網域到此 AWS IoT 端點`CNAME`的記錄。如果您在相同的 中建立多個自訂網域 AWS 帳戶， 會將它們別名為這個相同的`iot:Data-ATS`端點。

## 疑難排解
<a name="iot-custom-endpoints-configurable-troubleshoot"></a>

如果您無法將裝置連線至自訂網域，請確定 AWS IoT Core 已接受並套用您的伺服器憑證。您可以使用 AWS IoT Core 主控台或 驗證 AWS IoT Core 是否已接受您的憑證 AWS CLI。

若要使用 AWS IoT Core 主控台，請導覽至**網域組態**頁面，然後選取網域組態名稱。在 **Server certificate details** (伺服器憑證詳細資訊) 區段中，檢查狀態和狀態詳細資訊。如果憑證無效，請在 ACM 中將其取代為符合上節所列[憑證需求](#certificate-requirements)的憑證。如果憑證具有相同的 ARN， AWS IoT Core 會將其提取並自動套用。

若要使用 檢查憑證狀態 AWS CLI，請呼叫 [DescribeDomainConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeDomainConfiguration.html) API 並指定您的網域組態名稱。

**注意**  
如果您的憑證無效， AWS IoT Core 將繼續提供最後一個有效的憑證。

您可以使用下列 openssl 命令，檢查正在端點上為哪個憑證提供服務。

`openssl s_client -connect {{custom-domain-name}}:8883 -showcerts -servername {{custom-domain-name}}`