

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

# 用戶端身分驗證
<a name="client-authentication"></a>

AWS IoT 支援三種類型的身分主體進行裝置或用戶端身分驗證：
+ [X.509 用戶端憑證](x509-client-certs.md)
+ [IAM 使用者、群組和角色](iam-users-groups-roles.md)
+ [Amazon Cognito 身分](cognito-identities.md)

這些身分可用於裝置、行動裝置、網頁或桌面應用程式。使用者輸入 AWS IoT 命令列界面 (CLI) 命令甚至可以使用它們。一般而言， AWS IoT 裝置使用 X.509 憑證，而行動應用程式則使用 Amazon Cognito 身分。Web 和桌面應用程式則使用 IAM 或聯合身分。 AWS CLI 命令會使用 IAM。如需 IAM 身分的詳細資訊，請參閱[的身分和存取管理 AWS IoT](security-iam.md)。

# X.509 用戶端憑證
<a name="x509-client-certs"></a>

X.509 憑證 AWS IoT 提供驗證用戶端和裝置連線的能力。用戶端憑證必須先向 註冊 AWS IoT ，用戶端才能與 通訊 AWS IoT。您可以在相同 中的多個 AWS 帳戶中註冊用戶端憑證 AWS 區域 ，以便在同一區域中的 AWS 帳戶之間移動裝置。如需詳細資訊，請參閱 [在具有多帳戶註冊的多個 AWS 帳戶中使用 X.509 用戶端憑證](#multiple-account-cert)。

我們建議為每個裝置或用戶端提供唯一的憑證，藉此更精細地管理用戶端，包括憑證撤銷作業。裝置必須支援憑證的輪換和替代，以確保憑證過期時操作順暢。

如需使用 X.509 憑證支援數個裝置的詳細資訊，請參閱 [裝置佈建](iot-provision.md)，以檢閱 AWS IoT 支援的不同憑證管理和佈建選項。

**AWS IoT 支援這些類型的 X.509 用戶端憑證：**
+  產生的 X.509 憑證 AWS IoT
+  由向 註冊的 CA 簽署的 X.509 憑證 AWS IoT。
+  未註冊 AWS IoT且有 CA 簽署的 X.509 憑證。

本節說明如何在 AWS IoT中管理 X.509 憑證。您可以使用 AWS IoT 主控台或 AWS CLI 來執行這些憑證操作：
+ [建立 AWS IoT 用戶端憑證](device-certs-create.md)
+ [建立您自己的用戶端憑證](device-certs-your-own.md)
+ [註冊用戶端憑證](register-device-cert.md)
+ [啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md)
+ [撤銷用戶端憑證](revoke-ca-cert.md)

如需執行這些操作之 AWS CLI 命令的詳細資訊，請參閱 [AWS IoT CLI 參考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html)。

## 使用 X.509 用戶端憑證
<a name="x509-client-cert-basics"></a>

X.509 憑證會驗證用戶端和裝置的連線 AWS IoT。相較於其他識別和身分驗證機制，X.509 憑證具備多種好處。X.509 憑證可讓裝置使用非對稱金鑰。例如，您可以將私密金鑰燒錄到裝置上的安全儲存空間，這樣敏感的密碼編譯資料永遠不會離開裝置。由於私有金鑰絕對不會離開裝置，因此 X.509 憑證提供更勝於其他機制 (例如使用者名稱和密碼或承載符記) 的強大用戶端身分驗證。

AWS IoT 會使用 TLS 通訊協定的用戶端身分驗證模式來驗證用戶端憑證。TLS 支援多種程式設計語言與作業系統，且普遍用於加密資料。在 TLS 用戶端身分驗證中， AWS IoT 會請求 X.509 用戶端憑證，並根據憑證 AWS 帳戶 登錄檔驗證憑證的狀態。然後，它會向用戶端挑戰與憑證中包含的公有金鑰對應的私有金鑰的擁有權證明。 AWS IoT 要求用戶端將[伺服器名稱指示 (SNI) 延伸](https://tools.ietf.org/html/rfc3546#section-3.1)模組傳送至 Transport Layer Security (TLS) 通訊協定。如需設定 SNI 延伸模組的詳細資訊，請參閱 [中的傳輸安全性 AWS IoT Core](transport-security.md)。

為了促進安全且一致的用戶端連線至 AWS IoT 核心，X.509 用戶端憑證必須擁有下列項目：
+ 在 AWS IoT Core 中註冊。如需詳細資訊，請參閱[註冊用戶端憑證](register-device-cert.md)。
+ 狀態為 `ACTIVE`。如需詳細資訊，請參閱[啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md)。
+ 尚未到達憑證過期日期。

您可以建立使用 Amazon 根 CA 的用戶端憑證，也可以使用由其他憑證授權單位 (CA) 簽署的自有用戶端憑證。如需使用 AWS IoT 主控台建立使用 Amazon 根 CA 的憑證的詳細資訊，請參閱 [建立 AWS IoT 用戶端憑證](device-certs-create.md)。如需使用您自己的 X.509 憑證的詳細資訊，請參閱 [建立您自己的用戶端憑證](device-certs-your-own.md)。

對於有憑證授權機構憑證簽署的憑證，其過期日期與時間會於憑證建立時設定。產生的 X.509 憑證會在 2049 年 12 月 31 日 UTC 午夜 (2049-12-31T23：59：59Z AWS IoT 過期）。

AWS IoT Device Defender 可以對支援常見 IoT 安全最佳實務的 AWS 帳戶 和裝置執行稽核。這包括管理您的 CA 或 Amazon 根 CA 簽署的 X.509 憑證過期日期。如需管理憑證過期日期的詳細資訊，請參閱[裝置憑證過期](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html)和 [CA 憑證過期](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html)。

在官方 AWS IoT 部落格上，如需深入了解裝置憑證輪換的管理，以及安全最佳實務，請參閱[如何使用 管理 IoT 裝置憑證輪換 AWS IoT](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/)。

## 在具有多帳戶註冊的多個 AWS 帳戶中使用 X.509 用戶端憑證
<a name="multiple-account-cert"></a>

多帳戶註冊可讓您在相同區域或不同區域的 AWS 帳戶之間移動裝置。您可以在生產前帳戶中註冊、測試和設定裝置，然後在生產帳戶中註冊並使用相同的裝置和裝置憑證。您也可以在裝置上註冊用戶端憑證，或在沒有註冊 CA 的情況下註冊裝置憑證 AWS IoT。如需詳細資訊，請參閱[註冊未註冊 CA 所簽署的用戶端憑證 (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli)。

**注意**  
`iot:Data-ATS`、`iot:Data` (舊式)、`iot:Jobs` 及 `iot:CredentialProvider` 端點類型上支援用於多帳戶註冊的憑證。如需 AWS IoT 裝置端點的詳細資訊，請參閱 [AWS IoT 裝置資料和服務端點](iot-connect-devices.md#iot-connect-device-endpoints)。

使用多帳戶註冊的裝置必須將[伺服器名稱指示 (SNI) 延伸](https://tools.ietf.org/html/rfc3546#section-3.1)項目傳送至 Transport Layer Security (TLS) 通訊協定，並在連線至 時提供 `host_name` 欄位中的完整端點地址 AWS IoT。 AWS IoT 會使用 中的端點地址，將連線`host_name`路由至正確的 AWS IoT 帳戶。未在 `host_name` 中傳送有效端點位址的現有裝置將繼續運作，但無法使用需要此資訊的功能。如需 SNI 延伸模組的詳細資訊，以及如何識別 `host_name` 欄位的端點位址，請參閱 [中的傳輸安全性 AWS IoT Core](transport-security.md)。

**使用多帳戶註冊**

1. 您可以在有 CA 的情況下註冊裝置憑證。您可以在 `SNI_ONLY` 模式下在多個帳戶中註冊簽署 CA，並使用該 CA 將相同的用戶端憑證註冊到多個帳戶。如需詳細資訊，請參閱[在 SNI\$1ONLY 模式下註冊 CA 憑證 (CLI) - 建議](manage-your-CA-certs.md#register-CA-cert-SNI-cli)。

1. 您可以在沒有 CA 的情況下註冊裝置憑證。請參閱 [註冊未註冊 CA 所簽署的用戶端憑證 (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli)。註冊 CA 非必須。您不需要註冊簽署裝置憑證的 CA AWS IoT。

## 支援的憑證簽署演算法 AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT 支援下列憑證簽署演算法：
+ SHA256WITHRSA
+ SHA384WITHRSA
+ SHA512WITHRSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSASSA-PSS)
+ DSA\$1WITH\$1SHA256
+ ECDSA-WITH-SHA256
+ ECDSA-WITH-SHA384
+ ECDSA-WITH-SHA512

如需憑證身分驗證和安全性的詳細資訊，請參閱[裝置憑證金鑰品質](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html)。

**注意**  
憑證簽署請求 (CSR) 必須包含公開金鑰。該金鑰可以是公開金鑰 (長度至少 2,048 位元) 或 ECC 金鑰 (至少 NIST P-256、NIST P-384 或 NIST P-521 曲線)。如需詳細資訊，請參閱《*AWS IoT API 參考指南*》中的 [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html)。

## 支援的金鑰演算法 AWS IoT
<a name="x509-cert-key-algorithms"></a>

下表顯示如何支援金鑰演算法：


****  

| 金鑰演算法 | 憑證簽署演算法 | TLS 版本控制 | 支援？ 是或否 | 
| --- | --- | --- | --- | 
| 金鑰大小至少為 2048 位元的 RSA | 全部 | TLS 1.2 TLS 1.3 | 是 | 
| ECC NIST P-256/P-384/P-521 | 全部 | TLS 1.2 TLS 1.3 | 是 | 
| 金鑰大小至少為 2048 位元的 RSA-PSS | 全部 | TLS 1.2 | 否 | 
| 金鑰大小至少為 2048 位元的 RSA-PSS | 全部 | TLS 1.3 | 是 | 

若要使用 [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html) 建立憑證，您可以使用支援的金鑰演算法來產生 CSR 的公有金鑰。若要使用 [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html) 或 [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html) 註冊您自己的憑證，您可以使用支援的金鑰演算法來產生憑證的公有金鑰。

如需詳細資訊，請參閱 [安全政策](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table)。

# 建立 AWS IoT 用戶端憑證
<a name="device-certs-create"></a>

AWS IoT 提供由 Amazon 根憑證授權機構 (CA) 簽署的用戶端憑證。

本主題說明如何建立由 Amazon 根憑證授權機構簽署的用戶端憑證，以及憑證檔案的下載方式。建立用戶端憑證檔案之後，您必須將它們安裝在用戶端上。

**注意**  
提供的每個 X.509 用戶端憑證都會 AWS IoT 保留您在憑證建立時設定的發行者和主體屬性。只在建立憑證之後，憑證屬性才是不可變的。

您可以使用 AWS IoT 主控台或 AWS CLI 來建立由 Amazon 根 AWS IoT 憑證授權單位簽署的憑證。

## 建立 AWS IoT 憑證 （主控台）
<a name="device-certs-create-console"></a>

**使用 AWS IoT 主控台建立 AWS IoT 憑證**

1. 登入 AWS 管理主控台 並開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在導覽窗格中，依序選擇**安全**、**憑證**，然後選擇**建立**。

1. 選擇 **One-click certificate creation (一鍵建立憑證)** - **Create certificate (建立憑證)**。

1. 從**已建立的憑證**頁面上，將該物件的用戶端憑證檔案、公開金鑰和私密金鑰下載到安全的位置。產生的這些憑證只能與 AWS IoT AWS IoT 服務搭配使用。

   如果您還需要 Amazon 根 CA 憑證檔案，此頁面上也有可下載該憑證的頁面連結。

1. 現在已建立用戶端憑證，並已註冊 AWS IoT。您必須先啟動憑證，才能在用戶端中使用憑證。

    若要立即啟用用戶端憑證，請選擇**啟用**。如果您不想立即啟用憑證，請參閱 [啟動用戶端憑證 (主控台)](activate-or-deactivate-device-cert.md#activate-device-cert-console) 以了解如何稍後再啟用憑證。

   

1. 如果您要將政策連接至憑證，請選擇 **Attach a policy** (連接政策)。

   如果您不想立即連接政策，請選擇 **Done** (完成) 來完成。您可以稍後附加政策。

完成程序之後，請在用戶端上安裝憑證檔案。

## 建立 AWS IoT 憑證 (CLI)
<a name="device-certs-create-cli"></a>

 AWS CLI 提供 **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)**命令來建立由 Amazon 根憑證授權單位簽署的用戶端憑證。但是，此命令不會下載 Amazon 根憑證授權機構憑證檔案。您可以從 [伺服器身分驗證的憑證授權機構憑證](server-authentication.md#server-authentication-certs) 下載 Amazon 根 CA 憑證檔案。

此命令會建立私有金鑰、公有金鑰和 X.509 憑證檔案，並使用 註冊和啟用憑證。 AWS IoT

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

如果您不想在建立並註冊憑證時啟動憑證，此命令會建立私有金鑰、公有金鑰和 X.509 憑證檔案並註冊憑證，但不會啟動憑證。[啟動用戶端憑證 (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) 描述稍後如何啟用憑證。

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



在用戶端上安裝憑證檔案。

# 建立您自己的用戶端憑證
<a name="device-certs-your-own"></a>

AWS IoT 支援由任何根憑證或中繼憑證授權機構 (CA) 簽署的用戶端憑證。 AWS IoT 會使用 CA 憑證來驗證憑證的擁有權。若要使用由非 Amazon CA 的 CA 簽署的裝置憑證，CA 的憑證必須向 註冊， AWS IoT 以便我們驗證裝置憑證的擁有權。

AWS IoT 支援多種自帶憑證 (BYOC) 的方式：
+ 首先，註冊用於簽署用戶端憑證的 CA，然後註冊個別的用戶端憑證。如果您想要在裝置或用戶端首次連線至其用戶端憑證 AWS IoT （也稱為[Just-in-Time佈建](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html)) 時註冊裝置或用戶端，您必須向 AWS IoT 註冊簽署 CA，並啟用自動註冊。
+ 如果您無法註冊簽署 CA，則可以選擇不使用 CA 註冊用戶端憑證。對於不使用 CA 註冊的裝置，在將它們連接到 AWS IoT時需要出示[伺服器名稱指示 (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1)。

**注意**  
若要使用 CA 註冊用戶端憑證，您必須向 註冊簽署 CA AWS IoT，而不是階層中的任何其他 CAs。

**注意**  
一個 CA 憑證只能由一個區域中的一個帳戶在 `DEFAULT` 模式下註冊。一個 CA 憑證可以由一個區域中的多個帳戶在 `SNI_ONLY` 模式下註冊。

如需有關使用 X.509 憑證支援數個以上裝置的詳細資訊，請參閱 [裝置佈建](iot-provision.md)，以檢閱 AWS IoT 支援的不同憑證管理和佈建選項。

**Topics**
+ [管理您的憑證授權機構憑證](manage-your-CA-certs.md)
+ [使用您的憑證授權機構憑證建立用戶端憑證](create-device-cert.md)

# 管理您的憑證授權機構憑證
<a name="manage-your-CA-certs"></a>

本節說明管理您自己的憑證授權機構 (CA) 憑證的一般工作。

 AWS IoT 如果您使用的用戶端憑證是由 AWS IoT 無法辨識的 CA 簽署，則可以向 註冊憑證授權機構 (CA)。

如果您希望用戶端在第一次連線 AWS IoT 時自動向 註冊其用戶端憑證，則必須向簽署用戶端憑證的 CA 註冊 AWS IoT。否則，您不需要註冊已簽署用戶端憑證的憑證授權機構憑證。

**注意**  
一個 CA 憑證只能由一個區域中的一個帳戶在 `DEFAULT` 模式下註冊。一個 CA 憑證可以由一個區域中的多個帳戶在 `SNI_ONLY` 模式下註冊。

**Topics**
+ [建立憑證授權機構憑證](#create-your-CA-cert)
+ [註冊您的憑證授權機構憑證](#register-CA-cert)
+ [停用憑證授權機構憑證](#deactivate-ca-cert)

## 建立憑證授權機構憑證
<a name="create-your-CA-cert"></a>

如果沒有 憑證授權機構憑證，您可以使用 [OpenSSL v1.1.1i](https://www.openssl.org/) 工具來建立憑證授權機構憑證。

**注意**  
您無法在 AWS IoT 主控台中執行此程序。

**使用 [OpenSSL v1.1.1i](https://www.openssl.org/) 工具來建立憑證授權機構憑證**

1. 產生金鑰對。

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. 透過該金鑰對的私有金鑰來產生憑證授權機構憑證。

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## 註冊您的憑證授權機構憑證
<a name="register-CA-cert"></a>

這些程序說明如何從不是 Amazon CA 的憑證授權單位 (CA) 註冊憑證。 AWS IoT Core 會使用 CA 憑證來驗證憑證的擁有權。若要使用由非 Amazon CA 的 CA 簽署的裝置憑證，您必須向 註冊 CA 憑證， AWS IoT Core 以便驗證裝置憑證的擁有權。

### 註冊憑證授權機構憑證 (主控台)。
<a name="register-CA-cert-console"></a>

**注意**  
若要在主控台中註冊憑證授權機構憑證，請在主控台中的[註冊憑證授權機構憑證](https://console.aws.amazon.com//iot/home#/create/cacertificate)開始。您可在多帳戶模式下註冊您的 CA，而無需提供驗證憑證或私有金鑰的存取權。一個 CA 可由相同 AWS 區域中的多個 AWS 帳戶 以多帳戶模式進行註冊。您可透過提供驗證憑證和 CA 私有金鑰的擁有權證明，以單一帳戶模式註冊您的 CA。

### 註冊憑證授權機構憑證 (CLI)
<a name="register-CA-cert-cli"></a>

您可以在 `DEFAULT` 模式或 `SNI_ONLY` 模式下註冊 CA 憑證。CA 可以在 `DEFAULT` 中以 模式註冊 AWS 帳戶 AWS 區域。CA 可以由相同 AWS 帳戶 中的多個 以 `SNI_ONLY` 模式註冊 AWS 區域。如需 CA 憑證模式的詳細資訊，請參閱 [certificateMode](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode)。

**注意**  
我們建議您在 `SNI_ONLY` 模式下註冊 CA。您不需要提供驗證憑證或存取私有金鑰，而且您可以在相同 AWS 帳戶 中透過多個 註冊 CA AWS 區域。

#### 在 SNI\$1ONLY 模式下註冊 CA 憑證 (CLI) - 建議
<a name="register-CA-cert-SNI-cli"></a>

**先決條件**

繼續操作之前，請確定您的電腦上具有下列資訊：
+ 根 CA 憑證檔案 (於下列範例中引用為 `root_CA_cert_filename.pem`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) 或更新版本

**使用 在 `SNI_ONLY` 模式下註冊 CA 憑證 AWS CLI**

1. 向 註冊 CA 憑證 AWS IoT。使用 **register-ca-certificate** 命令，輸入 CA 憑證檔案名稱。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html)。

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   若成功，此命令會傳回 *certificateId*。

1. 此時，CA 憑證已向 註冊， AWS IoT 但處於非作用中狀態。CA 憑證必須處於作用中狀態，您才能註冊已簽署的任何用戶端憑證。

   這個步驟會啟動 CA 憑證。

   若要啟用該 CA 憑證，請按如下所示使用 **update-certificate** 命令。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)。

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

若要查看 CA 憑證的狀態，請使用 **describe-ca-certificate** 命令。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html)。

#### 在 `DEFAULT` 模式下註冊 CA 憑證 (CLI)
<a name="register-CA-cert-default-cli"></a>

**先決條件**

繼續操作之前，請確定您的電腦上具有下列資訊：
+ 根 CA 憑證檔案 (於下列範例中引用為 `root_CA_cert_filename.pem`)
+ 根 CA 憑證私有金鑰檔案 (於下列範例中引用為 `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) 或更新版本

**使用 在 `DEFAULT` 模式下註冊 CA 憑證 AWS CLI**

1. 若要從 取得註冊碼 AWS IoT，請使用 **get-registration-code**。將傳回的 `registrationCode` 儲存為私有金鑰驗證憑證的 `Common Name`。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html)。

   ```
   aws iot get-registration-code
   ```

1. 產生私有金鑰驗證憑證的金鑰對：

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. 建立私密金鑰驗證憑證的憑證簽署要求 (CSR)。將憑證的 `Common Name` 欄位設定為 **get-registration-code** 傳回的 `registrationCode`。

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   將顯示提示要求您輸入一些此憑證的資訊，包括 `Common Name`。

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. 使用 CSR 建立私有金鑰驗證憑證：

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. 向 註冊 CA 憑證 AWS IoT。將 CA 憑證檔案名稱和私有金鑰驗證憑證檔案名稱傳遞給 **register-ca-certificate** 命令，如下所示。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html)。

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   如果成功，此命令會傳回 *certificateId*。

1. 此時，CA 憑證已向 註冊， AWS IoT 但未處於作用中狀態。CA 憑證必須處於作用中狀態，您才能註冊已簽署的任何用戶端憑證。

   這個步驟會啟動 CA 憑證。

   若要啟用該 CA 憑證，請按如下所示使用 **update-certificate** 命令。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)。

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

若要查看 CA 憑證的狀態，請使用 **describe-ca-certificate** 命令。如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html)。

### 建立憑證授權機構驗證憑證以在主控台中註冊憑證授權機構憑證
<a name="create-CA-verification-cert"></a>

**注意**  
此程序僅適用於從 AWS IoT 主控台註冊 CA 憑證的情況。  
如果您不是從 AWS IoT 主控台前往此程序，請在註冊 CA 憑證的主控台中啟動 [CA 憑證註冊](https://console.aws.amazon.com//iot/home#/create/cacertificate)程序。

繼續操作之前，請確定您在同一台電腦上具有下列可用項目：
+ 根 CA 憑證檔案 (於下列範例中引用為 `root_CA_cert_filename.pem`)
+ 根 CA 憑證私有金鑰檔案 (於下列範例中引用為 `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) 或更新版本

**如要使用命令列介面來建立 CA 驗證憑證，以於主控台中註冊您的 CA 憑證**

1. 將 `verification_cert_key_filename.key` 替換為您要建立的驗證憑證金鑰檔案名稱 (例如 **verification\$1cert.key**)。然後執行此命令以產生私有金鑰驗證憑證的金鑰對：

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. 將 `verification_cert_key_filename.key` 替換為您在步驟 1 建立的金鑰檔案名稱。

   `verification_cert_csr_filename.csr` 替換為您要建立的憑證簽署請求 (CSR) 檔案名稱。例如 **verification\$1cert.csr**。

   執行此命令以建立 CSR 檔案。

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   命令會提示您輸入其他資訊 (稍後會說明)。

1. 在 AWS IoT 主控台的**驗證憑證**容器中，複製註冊碼。

1. **openssl** 命令提示您輸入的資訊如下列範例所示。除了 `Common Name` 欄位，您可輸入自己的值或將其留空。

   於 `Common Name` 欄位中，請貼上您在上一個步驟中複製的註冊碼。

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   完成後，命令將建立 CSR 檔案。

1. `verification_cert_csr_filename.csr` 替換為您在上一個步驟中使用的 `verification_cert_csr_filename.csr`。

   將 `root_CA_cert_filename.pem` 替換為您要註冊的 CA 憑證檔案名稱。

   將 `root_CA_key_filename.key` 替換為 CA 憑證私有金鑰檔案的檔案名稱。

   將 `verification_cert_filename.pem` 替換為您要建立的驗證憑證檔案名稱。例如 **verification\$1cert.pem**。

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. OpenSSL 命令完成後，您應準備好這些檔案，以供返回主控台時使用。
   + 您的憑證授權機構憑證檔案 (在上一個命令中使用的 `root_CA_cert_filename.pem`)
   + 您在上一個步驟中建立的驗證憑證 (用於上一個命令中的 *verification\$1cert\$1filename.pem*)

## 停用憑證授權機構憑證
<a name="deactivate-ca-cert"></a>

當憑證授權機構 (CA) 憑證啟用自動用戶端憑證註冊時， 會 AWS IoT 檢查 CA 憑證，以確保 CA 為 `ACTIVE`。如果 CA 憑證為 `INACTIVE`， AWS IoT 則不允許註冊用戶端憑證。

藉由將 CA 憑證設定為 `INACTIVE`，您可防止自動註冊 CA 所核發的任何新用戶端憑證。

**注意**  
由有風險之憑證授權機構憑證簽署的任何已註冊裝置憑證將持續運作，直到您確實逐一撤銷這些憑證為止。

### 停用憑證授權機構憑證 (主控台)
<a name="deactivate-ca-cert-console"></a>

**使用 AWS IoT 主控台停用 CA 憑證**

1. 登入 AWS 管理主控台 並開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 請在左側導覽窗格中，選擇 **Secure** (安全)、**CAs** (CA)。

1. 於憑證授權單位清單中，找出您要停用的憑證授權單位，接著選擇省略號圖示開啟選項選單。

1. 在選項選單上，選擇 **Deactivate (停用)**。

憑證授權機構應在清單中顯示為 **Inactive (非作用中)**。

**注意**  
 AWS IoT 主控台不提供列出您停用之 CA 簽署的憑證的方法。如需列出這些憑證的 AWS CLI 選項，請參閱 [停用憑證授權機構憑證 (CLI)](#deactivate-ca-cert-cli)。

### 停用憑證授權機構憑證 (CLI)
<a name="deactivate-ca-cert-cli"></a>

 AWS CLI 提供 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)命令來停用 CA 憑證。

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html) 命令，取得由指定 CA 簽署的所有已註冊裝置憑證清單。針對由指定憑證授權機構憑證所簽署的每一裝置憑證，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) 命令來撤銷該裝置憑證，以避免受到使用。

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) 命令來查看 CA 憑證的狀態。

# 使用您的憑證授權機構憑證建立用戶端憑證
<a name="create-device-cert"></a>

您可以使用自己的憑證授權機構 (CA) 來建立用戶端憑證。用戶端憑證必須先向 註冊 AWS IoT ，才能使用。如需用戶端憑證之註冊選項的詳細資訊，請參閱 [註冊用戶端憑證](register-device-cert.md)。

## 建立用戶端憑證 (CLI)
<a name="create-device-cert-cli"></a>

**注意**  
您無法在 AWS IoT 主控台中執行此程序。

**使用 建立用戶端憑證 AWS CLI**

1. 產生金鑰對。

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. 建立用戶端憑證的 CSR。

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   將出現提示，要求您輸入一些資訊，如下所示：

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. 從 CSR 建立用戶端憑證。

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 此時，用戶端憑證已建立，但尚未註冊 AWS IoT。如需如何和何時註冊用戶端憑證的詳細資訊，請參閱 [註冊用戶端憑證](register-device-cert.md)。

# 註冊用戶端憑證
<a name="register-device-cert"></a>

用戶端憑證必須向 註冊 AWS IoT ，才能啟用用戶端與 之間的通訊 AWS IoT。您可以手動註冊每個用戶端憑證，也可以將用戶端憑證設定為 AWS IoT 在用戶端第一次連線至 時自動註冊。

 如果想要您的用戶端和裝置在第一次連線時註冊，您必須使用 [註冊您的憑證授權機構憑證](manage-your-CA-certs.md#register-CA-cert)，在要使用用戶端憑證的區域中透過 AWS IoT 來簽署該用戶端憑證。Amazon 根 CA 會自動向 註冊 AWS IoT。

用戶端憑證可由 AWS 帳戶 和 區域共用。這些主題中的程序必須在您要使用用戶端憑證的每個帳戶和區域中執行。在一個帳戶或區域中註冊用戶端憑證時，另一個帳戶或區域不會自動加以辨識。

**注意**  
使用 Transport Layer Security (TLS) 通訊協定來連線 AWS IoT 的用戶端必須支援 TLS 的[伺服器名稱指示 (SNI) 延伸](https://tools.ietf.org/html/rfc3546#section-3.1)。如需詳細資訊，請參閱[中的傳輸安全性 AWS IoT Core](transport-security.md)。

**Topics**
+ [手動註冊用戶端憑證](manual-cert-registration.md)
+ [在用戶端連線至 AWS IoT just-in-time註冊 (JITR) 時註冊用戶端憑證](auto-register-device-cert.md)

# 手動註冊用戶端憑證
<a name="manual-cert-registration"></a>

您可以使用 AWS IoT 主控台和 手動註冊用戶端憑證 AWS CLI。

要使用的註冊程序取決於 AWS 帳戶和 區域是否會共用憑證。在一個帳戶或區域中註冊用戶端憑證時，另一個帳戶或區域不會自動加以辨識。

本主題中的程序必須在您要使用用戶端憑證的每個帳戶和區域中執行。用戶端憑證可由 AWS 帳戶和 區域共用。

## 註冊已註冊 CA 所簽署的用戶端憑證 (主控台)
<a name="manual-cert-registration-console"></a>

**注意**  
執行此程序之前，請確定您擁有用戶端憑證的 .pem 檔案，且用戶端憑證是由您已[註冊 AWS IoT](manage-your-CA-certs.md#register-CA-cert)的 CA 簽署。

**AWS IoT 使用主控台向 註冊現有憑證**

1. 登入 AWS 管理主控台並開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 請在導覽窗格的 **Manage** (管理) 區段中，選擇 **Security** (安全性)，然後選擇 **Certificates** (憑證)。

1. 在 **Certificates** (憑證) 頁面的 **Certificates** (憑證) 對話方塊中，選擇 **Add certificate** (新增憑證)，然後選擇 **Register certificates** (註冊憑證)。

1. 在 **Register certificate** (登錄憑證) 頁面的 **Certificates to upload** (要上傳的憑證) 對話方塊中執行下列操作：
   + 請選擇 **CA is registered with AWS IoT** (已用註冊 CA)。
   + 從 **Choose a CA certificate** (選擇 CA 憑證) 中，選取您的 **Certification authority** (憑證授權機構)。
     + 選擇 **Register a new CA** (註冊新的憑證) 以註冊未使用 AWS IoT註冊的新 **Certification authority** (憑證授權機構)。
     + 若 **Amazon Root certificate authority** (Amazon 根憑證授權機構) 是您的憑證授權機構，**Choose a CA certificate** (選擇 CA 憑證) 請保留空白。
   + 最多選取要上傳和註冊的 10 個憑證 AWS IoT。
     + 請選擇您在 [建立 AWS IoT 用戶端憑證](device-certs-create.md) 和 [使用您的憑證授權機構憑證建立用戶端憑證](create-device-cert.md) 中建立的憑證檔案。
   + 請選擇 **Activate** (啟動) 或 **Deactivate** (停用)。若您選擇 **Deactive** (停用)，[啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md) 會說明如何在註冊憑證後啟動憑證。
   + 選擇**註冊**。

您已註冊的憑證將會出現在 **Certificates** (憑證) 頁面的 **Certificates** (憑證) 對話方塊中。

## 註冊未註冊 CA 所簽署的用戶端憑證 (主控台)
<a name="manual-cert-registration-console-noca"></a>

**注意**  
執行此程序之前，請確定您擁有用戶端憑證的 .pem 檔案。

**AWS IoT 使用主控台向 註冊現有憑證**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure** (安全)、選擇 **Certificates** (憑證)，然後選擇 **Create** (建立)。

1. 在 **Create a certificate** (建立憑證) 上，找出 **Use my certificate** (使用我的憑證) 項目，然後選擇 **Get started** (開始使用)。

1. 在 **Select a CA** (選取 CA) 上，選擇 **Next** (下一步)。

1.  在 **Register existing device certificates** (註冊現有裝置憑證) 上，選擇 **Select certificates** (選取憑證)，然後選取最多 10 個要註冊的憑證檔案。

1.  關閉檔案對話方塊後，請選取您要在註冊用戶端憑證時啟用，還是撤銷用戶端憑證。

   如果您未在註冊憑證時啟用憑證，[啟動用戶端憑證 (主控台)](activate-or-deactivate-device-cert.md#activate-device-cert-console) 描述稍後如何啟用憑證。

   如果憑證在註冊時遭到撤銷，則無法稍後啟用。

   選擇要註冊的憑證檔案，並選取註冊後要採取的動作之後，請選取 **Register certificates** (註冊憑證)。

已成功註冊的用戶端憑證會出現在憑證清單中。

## 註冊已註冊 CA 所簽署的用戶端憑證 (CLI)
<a name="manual-cert-registration-cli"></a>

**注意**  
執行此程序之前，請確定您擁有憑證授權機構 (CA) .pem 和用戶端憑證的 .pem 檔案。用戶端憑證必須由您已[註冊 AWS IoT](manage-your-CA-certs.md#register-CA-cert)的憑證授權機構 (CA) 簽署。

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html) 命令來註冊 (但不是啟動) 用戶端憑證。

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

用戶端憑證已向 註冊 AWS IoT，但尚未啟用。如需稍後如何啟用用戶端憑證的詳細資訊，請參閱 [啟動用戶端憑證 (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli)。

當您使用這個命令註冊用戶端憑證時，也可以啟動用戶端憑證。

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

如需啟用憑證使其可用於連線的詳細資訊 AWS IoT，請參閱 [啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md)

## 註冊未註冊 CA 所簽署的用戶端憑證 (CLI)
<a name="manual-cert-registration-noca-cli"></a>

**注意**  
執行此程序之前，請確定您擁有憑證的 .pem 檔案。

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html) 命令來註冊 (但不是啟動) 用戶端憑證。

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

用戶端憑證已向 註冊 AWS IoT，但尚未啟用。如需稍後如何啟用用戶端憑證的詳細資訊，請參閱 [啟動用戶端憑證 (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli)。

當您使用這個命令註冊用戶端憑證時，也可以啟動用戶端憑證。

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

如需啟用憑證使其可用於連線至 的詳細資訊 AWS IoT，請參閱 [啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md)。

# 在用戶端連線至 AWS IoT just-in-time註冊 (JITR) 時註冊用戶端憑證
<a name="auto-register-device-cert"></a>

您可以設定 CA 憑證，以啟用其簽署的用戶端憑證，以便在用戶端第一次連線時 AWS IoT 自動向 註冊 AWS IoT。

若要在用戶端 AWS IoT 第一次連線至 時註冊用戶端憑證，您必須啟用 CA 憑證以進行自動註冊，並設定用戶端提供所需憑證的第一個連線。

## 設定憑證授權機構憑證以支援自動註冊 (主控台)
<a name="enable-auto-registration-console"></a>

**使用 AWS IoT 主控台設定 CA 憑證以支援自動用戶端憑證註冊**

1. 登入 AWS 管理主控台並開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 請在左側導覽窗格中，選擇 **Secure** (安全)、**CAs** (CA)。

1. 在憑證授權單位清單中，尋找您要啟用自動註冊的憑證授權單位，然後使用省略符號圖示開啟選項選單。

1. 在選項選單上，選擇 **Enable auto-registration (啟用自動註冊)**。

**注意**  
自動註冊狀態不會顯示在憑證授權單位清單中。若要查看憑證授權機構的自動註冊狀態，您必須開啟憑證授權機構的 **Details (詳細資料)** 頁面。

## 設定憑證授權機構憑證以支援自動註冊 (CLI)
<a name="enable-auto-registration-cli"></a>

如果您已向 註冊 CA 憑證 AWS IoT，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)命令`autoRegistrationStatus`將 CA 憑證設定為 `ENABLE`。

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

如果您想要在註冊憑證授權機構憑證時啟用 `autoRegistrationStatus`，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) 命令。

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) 命令來查看 CA 憑證的狀態。

## 設定用戶端的首次連線進行自動註冊
<a name="configure-auto-reg-first-connect"></a>

當用戶端 AWS IoT 第一次嘗試連線至 時，在 Transport Layer Security (TLS) 交握期間，用戶端上必須存在由 CA 憑證簽署的用戶端憑證。

當用戶端連線到 時 AWS IoT，請使用您在[建立用戶端憑證或建立您自己的用戶端憑證中建立的 AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html)用戶端憑證。 會將 CA 憑證 AWS IoT 辨識為已註冊的 CA 憑證、註冊用戶端憑證，並將其狀態設定為 `PENDING_ACTIVATION`。 [https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html)這代表系統會自動註冊該用戶端憑證，並準備啟用。用戶端憑證的狀態必須先是 `ACTIVE` 才能用來連線 AWS IoT。請參閱 [啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md) 以了解啟用用戶端憑證的相關資訊。

**注意**  
您可以使用 AWS IoT Core just-in-time(JITR) 功能佈建裝置，而不必在裝置的第一個連線上傳送整個信任鏈 AWS IoT Core。雖不要求顯示憑證授權機構憑證，但需要裝置在連線時傳送[伺服器名稱指示 (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) 延伸。

當 AWS IoT 自動註冊憑證或用戶端呈現 `PENDING_ACTIVATION` 狀態的憑證時， 會將訊息 AWS IoT 發佈至下列 MQTT 主題：

`$aws/events/certificates/registered/caCertificateId`

`caCertificateId` 為發行該用戶端憑證的憑證授權機構憑證 ID。

發佈至此主題的訊息具有以下結構：

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

您可以建立規則以監聽此主題，並執行部分動作。我們建議您建立 Lambda 規則，此規則可驗證用戶端憑證未列於憑證撤銷清單 (CRL) 中，同時啟用憑證，並建立和連接政策至憑證。政策會決定用戶端能夠存取哪些資源。如果您要建立的政策需要連線裝置的用戶端 ID，您可以使用規則的 clientid() 函數來擷取用戶端 ID。範例規則定義可能如下所示：

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

在此範例中，規則會訂閱 JITR 主題`$aws/events/certificates/registered/caCertificateID`，並使用 clientid() 函數來擷取用戶端 ID。然後，規則會將用戶端 ID 附加至 JITR 承載。如需規則 clientid() 函數的詳細資訊，請參閱 [clientid()](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid)。

如需如何建立會接聽 `$aws/events/certificates/registered/caCertificateID` 主題並執行這些動作之 Lambda 規則的詳細資訊，請參閱 [AWS IoT上用戶端憑證的即時註冊](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/)。

如果在自動註冊用戶端憑證期間發生任何錯誤或例外狀況， 會將事件或訊息 AWS IoT 傳送至 CloudWatch Logs 中的日誌。如需為您帳戶設定記錄的詳細資訊，請參閱 [Amazon CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)。

# 管理用戶端憑證
<a name="manage-device-cert"></a>

AWS IoT 為您提供管理用戶端憑證的功能。

**Topics**
+ [啟用或停用用戶端憑證](activate-or-deactivate-device-cert.md)
+ [將物件或政策連接至用戶端憑證](attach-to-cert.md)
+ [撤銷用戶端憑證](revoke-ca-cert.md)
+ [將憑證傳輸至另一個帳戶](transfer-cert.md)

# 啟用或停用用戶端憑證
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT 驗證用戶端憑證在驗證連線時是否處於作用中狀態。

您可以建立和註冊用戶端憑證而不需啟用它們，這樣在您想要使用前，它們就不會被使用。您也可以停用作用中的用戶端憑證，以暫時停用這些憑證。最後，您可以撤銷用戶端憑證，以防止未來使用這些憑證。

## 啟動用戶端憑證 (主控台)
<a name="activate-device-cert-console"></a>

**使用 AWS IoT 主控台啟用用戶端憑證**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

1. 在憑證清單中，找出您要啟用的憑證，然後使用省略符號圖示開啟選項選單。

1. 在選項選單中，選擇 **Activate (啟動)**。

憑證在憑證清單應顯示為 **Active (作用中)**。

## 停用用戶端憑證 (主控台)
<a name="deactivate-device-cert-console"></a>

**使用 AWS IoT 主控台停用用戶端憑證**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

1. 在憑證清單中，找出您要停用的憑證，然後使用省略符號圖示開啟選項選單。

1. 在選項選單中，選擇 **Deactivate (停用)**。

憑證在憑證清單中應顯示為 **Inactive (非作用中)**。

## 啟動用戶端憑證 (CLI)
<a name="activate-device-cert-cli"></a>

 AWS CLI 提供 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)命令來啟用憑證。

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

如果命令成功，則憑證的狀態將會是 `ACTIVE`。執行 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) 以查看憑證的狀態。

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## 停用用戶端憑證 (CLI)
<a name="deactivate-device-cert-cli"></a>

 AWS CLI 提供停用憑證的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)命令。

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

如果命令成功，則憑證的狀態將會是 `INACTIVE`。執行 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) 以查看憑證的狀態。

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# 將物件或政策連接至用戶端憑證
<a name="attach-to-cert"></a>

當您建立和註冊與 AWS IoT 物件分開的憑證時，它不會有任何授權任何 AWS IoT 操作的政策，也不會與任何 AWS IoT 物件相關聯。本節說明如何在已註冊憑證上新增這些關聯。

**重要**  
要完成這些程序，您必須先建立要連接至憑證的物件或政策。

憑證會使用 驗證裝置， AWS IoT 使其可以連線。將憑證連接至物件資源會在裝置 (透過憑證) 與物件資源之間建立關係。若要授權裝置執行 AWS IoT 動作，例如允許裝置連接和發佈訊息，必須將適當的政策連接到裝置的憑證。

## 將物件連接至用戶端憑證 (主控台)
<a name="attach-to-cert-thing-console"></a>

您需要物件名稱才能完成此程序。

**將物件連接至已註冊憑證**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

1. 在憑證清單中，找出要連接政策的憑證、選擇省略符號圖示來開啟憑證的選項選單，然後選擇 **Attach thing (連接物件)**。

1. 在彈出式視窗中，找出要連接至憑證的物件名稱、選擇其核取方塊，然後選擇 **Attach** (連接)。

物件現應出現在憑證詳細資訊頁面上的物件清單中。

## 將政策連接至用戶端憑證 (主控台)
<a name="attach-to-cert-policy-console"></a>

您需要政策物件名稱才能完成此程序。

**將政策物件連接至已註冊憑證**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

1. 在憑證清單中，找出要連接政策的憑證、選擇省略符號圖示來開啟憑證的選項選單，然後選擇 **Attach policy (連接政策)**。

1. 在彈出式視窗中，找出要連接至憑證的政策名稱、選擇其核取方塊，然後選擇 **Attach** (連接)。

政策物件現應出現在憑證詳細資訊頁面上的政策清單中。

## 將物件連接至用戶端憑證 (CLI)
<a name="attach-to-cert-thing-cli"></a>

 AWS CLI 提供將物件連接到憑證的[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)命令。

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## 將政策連接至用戶端憑證 (CLI)
<a name="attach-to-cert-policy-cli"></a>

 AWS CLI 提供 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)命令，以將政策物件連接至憑證。

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# 撤銷用戶端憑證
<a name="revoke-ca-cert"></a>

如果您在已註冊的用戶端憑證上偵測到可疑活動，您可以撤銷該憑證，使其無法再次使用。

**注意**  
憑證一旦撤銷，就無法變更其狀態。也就是說，憑證狀態無法變更為 `Active` 或任何其他狀態。

## 撤銷用戶端憑證 (主控台)
<a name="revoke-device-cert-console"></a>

**使用 AWS IoT 主控台撤銷用戶端憑證**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

1. 在憑證清單中，找出您要撤銷的憑證，然後使用省略符號圖示開啟選項選單。

1. 在選項選單中，選擇 **Revoke (撤銷)**。

如果憑證已成功撤銷，它會在憑證清單中顯示為 **Revoked (已撤銷)**。

## 撤銷用戶端憑證 (CLI)
<a name="revoke-device-cert-cli"></a>

 AWS CLI 提供撤銷憑證的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) 命令。

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

如果命令成功，則憑證的狀態將會是 `REVOKED`。執行 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) 以查看憑證的狀態。

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# 將憑證傳輸至另一個帳戶
<a name="transfer-cert"></a>

屬於某個憑證的 X.509 憑證 AWS 帳戶 可以轉移到另一個憑證 AWS 帳戶。

**將 X.509 憑證從一個憑證轉移到 AWS 帳戶 另一個憑證**

1. [開始傳輸憑證](#transfer-cert-init)

   在起始傳輸之前，必須先停用憑證，並將其與所有政策和物件分開。

1. [接受或拒絕憑證傳輸](#transfer-cert-accept)

   接收帳戶必須明確地接受或拒絕傳輸的憑證。在接收帳戶接受憑證之後，必須先啟用憑證才能使用。

1. [取消憑證傳輸](#transfer-cert-cancel)

   如果憑證未被接受，原始帳戶可以取消傳輸。

## 開始傳輸憑證
<a name="transfer-cert-init"></a>

您可以使用 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)或 ，開始 AWS 帳戶 將憑證轉移到另一個憑證 AWS CLI。

### 開始傳輸憑證 (主控台)
<a name="transfer-cert-init-console"></a>

若要完成此程序，將需要您想要傳輸之憑證的 ID。

從具有要傳輸之憑證的帳戶執行此程序。

**開始將憑證轉移到另一個憑證 AWS 帳戶**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

   選擇您想要傳輸且狀態為 **Active** (作用中) 或 **Inactive** (非作用中) 的憑證，並開啟其詳細資訊頁面。

1. 在憑證 **Details** (詳細資訊) 頁面的 **Actions** (動作) 選單中，如果 **Deactivate** (停用) 選項可用，請選擇 **Deactivate** (停用) 選項來停用憑證。

1. 在憑證的 **Details** (詳細資訊) 頁面的左側選單中，選擇 **Policies** (政策)。

1. 在憑證的 **Policies** (政策) 頁面上，如果有任何政策連接至憑證，請開啟政策的選項選單並選擇 **Detach** (分開)，來分開每個政策。

   在您繼續之前，憑證不得有任何連接的政策。

1. 在憑證的 **Policies** (政策) 頁面的左側選單中，選擇 **Things** (物件)。

1. 在憑證的 **Things** (物件) 頁面上，如果有任何物件連接至憑證，請開啟物件的選項選單並選擇 **Detach** (分開)，來分開每個物件。

   在您繼續之前，憑證不得有任何連接的物件。

1. 在憑證的 **Things** (物件) 頁面的左側選單中，選擇 **Details** (詳細資訊)。

1. 在憑證的 **Details** (詳細資訊) 頁面的 **Actions** (動作) 選單中，選擇 **Start transfer** (開始傳輸) 以開啟 **Start transfer** (開始傳輸) 對話方塊。

1. 在**開始轉移**對話方塊中，輸入要接收憑證的帳戶 AWS 帳戶 號碼，以及選用的簡短訊息。

1. 選擇 **Start transfer** (開始傳輸) 以傳輸憑證。

主控台應該會顯示訊息，指出傳輸成功或失敗。如果傳輸已開始，則憑證的狀態會更新為 **Transferred** (已傳輸)。

### 開始傳輸憑證 (CLI)
<a name="transfer-cert-init-cli"></a>

若要完成此程序，將需要您想要傳輸之憑證的 *certificateId* 和 *certificateArn*。

從具有要傳輸之憑證的帳戶執行此程序。

**開始將憑證轉移到另一個 AWS 帳戶**

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) 命令來停用憑證

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. 分開所有策略。

   1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html) 命令來列出已連接至憑證的政策。

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. 對於每個連接的政策，使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html) 命令來分開政策。

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. 分開所有物件。

   1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html) 命令來列出已連接至憑證的物件。

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. 對於每個連接的物件，使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html) 命令來分開物件。

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html) 命令來啟動憑證傳輸。

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## 接受或拒絕憑證傳輸
<a name="transfer-cert-accept"></a>

您可以使用 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)或 AWS 帳戶 ，接受或拒絕從另一個 傳輸給您 AWS 帳戶 的憑證 AWS CLI。

### 接受或拒絕憑證傳輸 (主控台)
<a name="transfer-cert-accept-console"></a>

若要完成此程序，將需要已傳輸至您帳戶之憑證的 ID。

從接收所傳輸憑證的帳戶執行此程序。

**接受或拒絕已傳輸至 的憑證 AWS 帳戶**

1. 登入 AWS 管理主控台並開啟[AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

   選擇您想要接受或拒絕且狀態為 **Pending transfer** (待定傳輸) 的憑證，並開啟其詳細資訊頁面。

1. 在憑證的 **Details** (詳細資訊) 頁面的 **Actions** (動作) 選單中，
   + 若要接受憑證，請選擇 **Accept transfer** (接受傳輸)。
   + 若不要接受憑證，請選擇 **Reject transfer** (拒絕傳輸)。

### 接受或拒絕憑證傳輸 (CLI)
<a name="transfer-cert-accept-cli"></a>

若要完成此程序，將需要您想要接受或拒絕之憑證傳輸的 *certificateId*。

從接收所傳輸憑證的帳戶執行此程序。

**接受或拒絕已傳輸至 的憑證 AWS 帳戶**

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html) 命令來接受憑證。

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html) 命令來拒絕憑證。

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## 取消憑證傳輸
<a name="transfer-cert-cancel"></a>

您可以在接受憑證傳輸之前，使用 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)或 AWS CLI來取消憑證傳輸。

### 取消憑證傳輸 (主控台)
<a name="transfer-cert-cancel-console"></a>

若要完成此程序，將需要您想要取消之憑證傳輸的 ID。

從已起始憑證傳輸的帳戶執行此程序。

**取消憑證傳輸**

1. 登入 AWS 管理主控台並開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/home)。

1. 在左側導覽窗格中，選擇 **Secure (安全)**，然後選擇 **Certificates (憑證)**。

   選擇您想要取消其傳輸且狀態為 **Transferred** (已傳輸) 的憑證，並開啟其選項選單。

1. 在憑證的選項選單上，選擇 **Revoke transfer** (撤銷傳輸) 選項來取消憑證傳輸。
**重要**  
請小心不要弄錯 **Revoke transfer** (撤銷傳輸) 選項與 **Revoke** (撤銷) 選項。  
**Revoke transfer** (撤銷傳輸) 選項會取消憑證傳輸，而 **Revoke** (撤銷) 選項會使 AWS IoT無法復原且無法使用憑證。

### 取消憑證傳輸 (CLI)
<a name="transfer-cert-cancel-cli"></a>

若要完成此程序，將需要您想要取消之憑證傳輸的 *certificateId*。

從已起始憑證傳輸的帳戶執行此程序。

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html) 命令來取消憑證傳輸。

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# 自訂用戶端憑證驗證
<a name="customize-client-auth"></a>

AWS IoT Core 支援 X.509 用戶端憑證的自訂用戶端憑證驗證，可增強用戶端身分驗證管理。此憑證驗證方法也稱為驗證前憑證檢查，您會根據自己的條件 （在 Lambda 函數中定義） 評估用戶端憑證，並撤銷用戶端憑證或憑證的簽署憑證授權單位 (CA) 憑證，以防止用戶端連線至 AWS IoT Core。例如，您可以建立自己的憑證撤銷檢查，以針對支援[線上憑證狀態通訊協定 (OCSP) 或憑證撤銷清單 (CRL) 端點的驗證授權單位驗證憑證的狀態](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol)，並防止具有撤銷憑證的用戶端連線。 [https://en.wikipedia.org/wiki/Certificate_revocation_list](https://en.wikipedia.org/wiki/Certificate_revocation_list)用於評估用戶端憑證的條件是在 Lambda 函數 （也稱為預先驗證 Lambda) 中定義。您必須使用網域組態中設定的端點，且[身分驗證類型](protocols.md#connection-protocol-auth-mode)必須是 X.509 憑證。此外，用戶端在連線至 時必須提供[伺服器名稱指示 (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) 延伸 AWS IoT Core。

**注意**  
 AWS GovCloud (US) 區域不支援此功能。

**Topics**
+ [步驟 1：向 註冊您的 X.509 用戶端憑證 AWS IoT Core](#client-auth-cert-verification)
+ [步驟 2：建立 Lambda 函數](#customize-client-auth-lambda)
+ [步驟 3：授權 AWS IoT 叫用您的 Lambda 函數](#customize-client-configuration-grant-permission)
+ [步驟 4：設定網域的身分驗證組態](#customize-client-configuration)

## 步驟 1：向 註冊您的 X.509 用戶端憑證 AWS IoT Core
<a name="client-auth-cert-verification"></a>

如果您尚未這麼做，請註冊並啟用 [X.509 用戶端憑證。](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) AWS IoT Core否則，跳至下一步。

若要使用 註冊和啟用您的用戶端憑證 AWS IoT Core，請遵循下列步驟：

1. 如果您[直接使用 建立用戶端憑證 AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html)。這些用戶端憑證會自動向 註冊 AWS IoT Core。

1. 如果您[建立自己的用戶端憑證](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html)，請依照[這些指示向 註冊 AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html)憑證。

1. 若要啟用您的用戶端憑證，請遵循[這些指示](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html)。

## 步驟 2：建立 Lambda 函數
<a name="customize-client-auth-lambda"></a>

您需要建立 Lambda 函數來執行憑證驗證，並針對所設定端點的每次用戶端連線嘗試呼叫 。建立此 Lambda 函數時，請遵循[建立第一個 Lambda 函數](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html)的一般指引。此外，請確定 Lambda 函數遵循預期的請求和回應格式，如下所示：

**Lambda 函數事件範例**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
中繼資料或與用戶端連線相關的其他資訊 AWS IoT Core。

`principalId`  
在 TLS 連線中與用戶端相關聯的主體識別符。

`serverName`  
[伺服器名稱指示 (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) 主機名稱字串。 AWS IoT Core 需要裝置將 [SNI 延伸](https://www.rfc-editor.org/rfc/rfc3546#section-3.1)項目傳送至 Transport Layer Security (TLS) 通訊協定，並在 `host_name`欄位中提供完整的端點地址。

`clientCertificateChain`  
代表用戶端 X.509 憑證鏈的字串陣列。

**Lambda 函數回應範例**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
布林值，指出是否驗證請求。

**注意**  
在 Lambda 回應中， `isAuthenticated` 必須`true`繼續進行進一步的身分驗證和授權。否則，可以停用 IoT 用戶端憑證，也可以封鎖使用 X.509 用戶端憑證的自訂身分驗證，以進一步進行身分驗證和授權。

## 步驟 3：授權 AWS IoT 叫用您的 Lambda 函數
<a name="customize-client-configuration-grant-permission"></a>

建立 Lambda 函數之後，您必須使用 [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) CLI 命令，授予 AWS IoT 叫用它的許可。請注意，每次嘗試連線到您設定的端點時，都會叫用此 Lambda 函數。如需詳細資訊，請參閱[授權 AWS IoT 叫用 Lambda 函數](custom-auth-authorize.md)。

## 步驟 4：設定網域的身分驗證組態
<a name="customize-client-configuration"></a>

下一節說明如何使用 設定自訂網域的身分驗證組態 AWS CLI。

### 設定網域的用戶端憑證組態 (CLI)
<a name="customize-client-auth-cli"></a>

如果您沒有網域組態，請使用 [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html) CLI 命令來建立組態。如果您已有網域組態，請使用 [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html) CLI 命令來更新網域的用戶端憑證組態。您必須新增您在上一個步驟中建立的 Lambda 函數 ARN。

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
網域組態的名稱。

`authentication-type`  
網域組態的身分驗證類型。如需詳細資訊，請參閱[選擇身分驗證類型](protocols.md#connection-protocol-auth-mode)。

`application-protocol`  
裝置用來與之通訊的應用程式通訊協定 AWS IoT Core。如需詳細資訊，請參閱[選擇應用程式通訊協定](protocols.md#protocol-selection)。

`client-certificate-config`  
指定網域用戶端身分驗證組態的物件。

`clientCertificateCallbackArn`  
建立新連線時，在 TLS layer 中 AWS IoT 叫用之 Lambda 函數的 Amazon Resource Name (ARN)。若要自訂用戶端身分驗證以執行自訂用戶端憑證驗證，您必須新增您在上一個步驟中建立之 Lambda 函數的 ARN。

如需詳細資訊，請參閱 *AWS IoT API 參考*中的 [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html) 和 [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)。如需網域組態的詳細資訊，請參閱[網域組態](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html)。

# IAM 使用者、群組和角色
<a name="iam-users-groups-roles"></a>

IAM 使用者、群組和角色為管理 AWS中身分及身分驗證的標準機制，您可以使用它們來使用 AWS SDK 和 連線到 AWS IoT HTTP 介面 AWS CLI。

IAM 角色也允許 代表您 AWS IoT 存取您帳戶中的其他 AWS 資源。例如，如果您想要讓裝置將其狀態發佈至 DynamoDB 資料表，IAM 角色 AWS IoT 允許 與 Amazon DynamoDB 互動。如需詳細資訊，請參閱 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。

對於透過 HTTP 的訊息中介裝置連線， 會使用 Signature 第 4 版簽署程序來 AWS IoT 驗證使用者、群組和角色。如需詳細資訊，請參閱[簽署 AWS API 請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)。

搭配 AWS Signature 第 4 版使用 時 AWS IoT，用戶端必須在其 TLS 實作中支援下列項目：
+ TLS 1.2
+ SHA-256 RSA 憑證簽章驗證
+ TLS 密碼套件支援部分的一種密碼套件

如需相關資訊，請參閱 [的身分和存取管理 AWS IoT](security-iam.md)。

# Amazon Cognito 身分
<a name="cognito-identities"></a>

Amazon Cognito Identity 可讓您建立暫時性的有限權限 AWS 登入資料，以用於行動和 Web 應用程式。當您使用 Amazon Cognito Identity 時，請建立身分集區，為您的使用者建立唯一身分，並使用 Login with Amazon、Facebook 和 Google 等身分提供者進行身分驗證。您也可以將 Amazon Cognito 身分識別與自己的開發人員已驗證身分搭配使用。如需詳細資訊，請參閱 [Amazon Cognito 身分](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)。

若要使用 Amazon Cognito Identity，請定義與 IAM 角色相關聯的 Amazon Cognito 身分集區。IAM 角色與 IAM 政策相關聯，該政策會授予身分集區中的身分存取 AWS 資源的許可，例如呼叫 AWS 服務。

Amazon Cognito 身分會建立未驗證和已驗證的身分。未驗證的身分適用於行動裝置或 Web 應用程式中想使用應用程式但不想登入的訪客使用者。未驗證的使用者只會獲得與身分集區相關聯之 IAM 政策中所指定的許可。

當您使用已驗證的身分時，除了連接到身分集區的 IAM 政策之外，您還必須將 AWS IoT 政策連接到 Amazon Cognito 身分。若要連接政策 AWS IoT ，請使用 [ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html) API，並將許可授予 AWS IoT 應用程式的個別使用者。您可以使用 AWS IoT 政策為特定客戶及其裝置指派精細的許可。

已驗證和未驗證的使用者是不同的身分類型。如果您未將 AWS IoT 政策連接至 Amazon Cognito 身分，則已驗證的使用者在 中的授權會失敗， AWS IoT 而且無法存取 AWS IoT 資源和動作。如需為 Amazon Cognito 身分建立政策的詳細資訊，請參閱 [發佈/訂閱政策範例](pub-sub-policy.md) 和 [使用 Amazon Cognito 身分授權](cog-iot-policies.md)。

![\[使用 Amazon Cognito Identity 存取裝置的應用程式。\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/device-cognito.png)
