

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

# 伺服器驗證
<a name="server-authentication"></a>

當您的裝置或其他用戶端嘗試連線時 AWS IoT Core AWS IoT Core ，伺服器會傳送 X.509 憑證，供您的裝置用來驗證伺服器。身分驗證是透過在 TLS 層驗證 [ X.509 憑證鏈](x509-client-certs.md)進行。這與您造訪 HTTPS URL 時瀏覽器所使用的方法相同。如果您要使用自己的憑證授權單位的憑證，請參閱 [管理您的憑證授權機構憑證](manage-your-CA-certs.md)。

當您的裝置或其他用戶端建立與端點的 AWS IoT Core TLS 連線時， 會 AWS IoT Core 呈現憑證鏈，供裝置用來驗證其是否正在與 通訊 AWS IoT Core ，而非其他伺服器模擬 AWS IoT Core。顯示的鏈取決於裝置所連接端點的類型，以及在 TLS 交握期間用戶端和 AWS IoT Core 交涉[的密碼套件](transport-security.md)的組合。

## 端點類型
<a name="endpoint-types"></a>

AWS IoT Core 支援 `iot:Data-ATS`。 `iot:Data-ATS`端點提供由 [Amazon Trust Services](https://www.amazontrust.com/repository/) CA 簽署的伺服器憑證。

ATS 端點呈現的憑證由 Starfield 交叉簽署。某些 TLS 用戶端實作需要驗證信任根，並要求在用戶端的信任存放區中安裝 Starfield 憑證授權機構憑證。

**警告**  
不建議使用雜湊整個憑證 (包括發行者名稱等) 的憑證關聯方法，因為這會導致憑證驗證失敗，因為我們提供的 ATS 憑證是由 Starfield 交叉簽署，且具有不同的發行者名稱。

**重要**  
使用`iot:Data-ATS`端點。Symantec 和 Verisign 憑證已棄用，不再受 支援 AWS IoT Core。

您可以使用 `describe-endpoint` 命令建立 ATS 端點。

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

`describe-endpoint` 命令會傳回下列格式的端點。

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**注意**  
第一次呼叫 `describe-endpoint` 時，會建立一個端點。所有後續呼叫 `describe-endpoint` 會傳回相同的端點。

**注意**  
若要在 AWS IoT Core 主控台中查看您的`iot:Data-ATS`端點，請選擇**設定**。主控台只會顯示 `iot:Data-ATS` 端點。

### `IotDataPlaneClient` 使用適用於 Java 的 AWS 開發套件建立
<a name="java-client"></a>

若要建立`IotDataPlaneClient`使用 `iot:Data-ATS`端點的 ，您必須執行下列動作。
+ 使用 [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html) API 建立 `iot:Data-ATS` 端點。
+ 在建立 `IotDataPlaneClient` 時指定該端點。

下列範例會同時執行這些操作。

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## 伺服器身分驗證的憑證授權機構憑證
<a name="server-authentication-certs"></a>

根據您正在使用的資料端點類型，以及您已交涉的密碼套件， AWS IoT Core 伺服器身分驗證憑證會由下列其中一個根 CA 憑證簽署：

**Amazon Trust Services 端點 (首選)**

**注意**  
您可能需要在這些連結上按一下滑鼠右鍵，然後選取 **Save link as...** (另存連結為...) 以將這些憑證儲存為檔案。
+ RSA 2048 位元金鑰：[https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem)。
+ RSA 4096 位元金鑰：Amazon Root CA 2。保留以供日後使用。
+ ECC 256 位元金鑰：[https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem)。
+ ECC 384 位元金鑰：Amazon Root CA 4。保留以供日後使用。

這些憑證都是由 [Starfield 根憑證授權機構憑證](https://www.amazontrust.com/repository/SFSRootCAG2.pem)交叉簽署的。所有新的 AWS IoT Core 區域，從 2018 年 5 月 9 日 AWS IoT Core 在亞太區域 （孟買） 區域推出 開始，僅提供 ATS 憑證。

**VeriSign 端點 (舊版)**
+ RSA 2048 位元金鑰：[VeriSign 類別 3 公開主要 G5 根憑證授權機構憑證](https://www.digicert.com/kb/digicert-root-certificates.htm)

## 伺服器身分驗證準則
<a name="server-authentication-guidelines"></a>

有許多變數會影響裝置驗證 AWS IoT Core 伺服器驗證憑證的能力。例如，裝置的記憶體可能受限，無法保存所有可能的根憑證授權機構憑證，或者裝置可能實作非標準的憑證驗證方法。基於這些原因，我們建議您遵循以下準則：
+ 我們建議您使用 ATS 端點並安裝所有支援的 Amazon Root CA 憑證。
+ 如果您無法在裝置上存放全部這些憑證，而且您的裝置未使用 ECC 式驗證，則可以略過 [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) 和 [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem) 4 ECC 憑證。如果您的裝置未實作 RSA 式憑證驗證，則可以略過 [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) 和 [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem) RSA 憑證。您可能需要在這些連結上按一下滑鼠右鍵，然後選取 **Save link as...** (另存連結為...) 以將這些憑證儲存為檔案。
+ 如果您在連線至 ATS 端點時遇到伺服器憑證驗證問題，請嘗試將相關的交叉簽署 Amazon Root 憑證授權機構憑證新增至信任存放區。您可能需要在這些連結上按一下滑鼠右鍵，然後選取 **Save link as...** (另存連結為...) 以將這些憑證儲存為檔案。
  + [交叉簽署 Amazon Root CA 1](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [交叉簽署的 Amazon Root CA 2](https://www.amazontrust.com/repository/G2-RootCA2.pem) - 預留以供日後使用。
  + [交叉簽署 Amazon Root CA 3](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [交叉簽署的 Amazon Root CA 4 - 預留以供日後使用。](https://www.amazontrust.com/repository/G2-RootCA4.pem)
+ 如果您遇到伺服器憑證驗證問題，則您的裝置可能需要明確地信任根 CA。嘗試將 [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) 新增到您的信任存放區。
+ 如果您在執行上述步驟後仍然遇到問題，請聯絡 [AWS 開發人員支援](https://aws.amazon.com/premiumsupport/plans/developers/)。

**注意**  
憑證授權機構憑證在過期日期之後，即無法用於驗證伺服器的憑證。憑證授權機構憑證過期日期之前，可能需要進行替代。請確認您能夠於所有裝置或用戶端更新根憑證授權機構憑證，以維持連線能力並取得最新的安全最佳實務。

**注意**  
在裝置程式碼 AWS IoT Core 中連線至 時，請將憑證傳遞至您用來連線的 API。您使用的 API 會因 SDK 而異。如需詳細資訊，請參閱 [AWS IoT Core 裝置開發套件](iot-sdks.md)。