

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

# 設定混合式後量子 TLS
<a name="pqtls-how-to"></a>

在此程序中，為 AWS 通用執行期 HTTP 用戶端新增 Maven 相依性。接下來，設定偏好後量子 TLS 的 HTTP 用戶端。然後，建立使用 HTTP AWS KMS 用戶端的用戶端。

若要查看設定與搭配 AWS KMS使用混合式後量子 TLS 的完整可用範例，請參閱 [https://github.com/aws-samples/aws-kms-pq-tls-example](https://github.com/aws-samples/aws-kms-pq-tls-example) 儲存庫。

**注意**  
已作為預覽版提供的 AWS 通用執行期 HTTP 用戶端，已於 2023 年 2 月正式推出。在該版本中，`tlsCipherPreference` 類別和 `tlsCipherPreference()` 方法參數由 `postQuantumTlsEnabled()` 方法參數取代。如果您在預覽期間使用此範例，則需要更新程式碼。

1. 將 AWS Common Runtime 用戶端新增至 Maven 相依性。我們建議使用最新的可用版本。

   例如，此陳述式會將 `2.30.22`版本的 AWS Common Runtime 用戶端新增至 Maven 相依性。

   ```
   <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>aws-crt-client</artifactId>
       <version>2.30.22</version>
   </dependency>
   ```

1. 若要啟用混合式後量子密碼套件，請將 AWS SDK for Java 2.x 新增至您的專案並初始化。然後如下列範例所示在 HTTP 用戶端啟用混合式後量子密碼套件。

   此程式碼使用 `postQuantumTlsEnabled()`方法參數來設定[AWS 常用的執行時間 HTTP 用戶端](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html)，其偏好建議的混合式後量子密碼套件 ECDH 搭配 ML-KEM。然後，它會使用設定的 HTTP 用戶端來建置 AWS KMS 非同步用戶端的執行個體 [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kms/KmsAsyncClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kms/KmsAsyncClient.html)。完成此程式碼之後，`KmsAsyncClient` 執行個體上的所有 [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) 請求都會使用混合式後量子 TLS。

   ```
   // Configure HTTP client
   SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder()
             .postQuantumTlsEnabled(true)
             .build();
   
   // Create the AWS KMS async client
   KmsAsyncClient kmsAsync = KmsAsyncClient.builder()
            .httpClient(awsCrtHttpClient)
            .build();
   ```

1. 使用混合式後量子 TLS 測試您的 AWS KMS 呼叫。

   當您在設定的 AWS KMS 用戶端上呼叫 AWS KMS API 操作時，您的呼叫會使用混合式後量子 TLS 傳輸至 AWS KMS 端點。若要測試您的組態，請呼叫 AWS KMS API，例如 `[ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)`。

   ```
   ListKeysReponse keys = kmsAsync.listKeys().get();
   ```

## 測試您的混合式後量子 TLS 組態
<a name="pqtls-testing"></a>

考慮在您的 呼叫的應用程式上使用混合密碼套件執行下列測試 AWS KMS。
+ 檢視您應用程式進行之 AWS KMS API 呼叫的 CloudTrail 日誌項目中的 `tlsDetails`區段。`keyExchange` 欄位應提及混合演算法，例如 `X25519MLKEM768`。如需範例，請參閱 [透過後量子 TLS 連線使用標準對稱加密金鑰進行解密](ct-decrypt.md#ct-decrypt-default-pqtls)。
+ 使用混合式後量子 TLS 執行基準測試。混合金鑰交換會增加 TLS 交握中某些訊息的大小和處理時間，但在大多數情況下，整體效能影響應該是不可接受的。
+ 請嘗試從不同位置進行連線。根據請求採用的網路路徑，您可能會發現具有深度封包檢查 (DPI) 的舊版中繼主機、代理或防火牆會封鎖請求。這可能是因為在 TLS 交握的 [ClientHello](https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2) 部分中使用新的金鑰交換群組，或來自較大的金鑰交換訊息。如果您無法解決這些問題，請與您的安全團隊或 IT 管理員合作，更新相關組態並解除封鎖新的 TLS 金鑰交換群組。