

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置混合后量子 TLS
<a name="pqtls-how-to"></a>

在此过程中，为 AWS 通用运行时 HTTP 客户端添加 Maven 依赖关系。然后配置一个优先使用后量子 TLS 的 HTTP 客户端。然后，创建一个使用 HTTP AWS KMS 客户端的客户端。

要查看演示混合后量子 TLS 与 AWS KMS结合使用的配置过程以及具体使用方法的完整工作示例，请参阅 [https://github.com/aws-samples/aws-kms-pq-tls-example](https://github.com/aws-samples/aws-kms-pq-tls-example) 存储库。

**注意**  
C AWS ommon Runtime HTTP 客户端已作为预览版提供，已于 2023 年 2 月正式上市。在正式发行版中，`tlsCipherPreference` 类和 `tlsCipherPreference()` 方法参数已替换为 `postQuantumTlsEnabled()` 方法参数替。如果您在预览期间使用此示例，则需要更新您的代码。

1. 将 AWS 通用运行时客户端添加到你的 Maven 依赖项中。我们建议您使用最新可用版本。

   例如，此语句将 AWS 通用运行时客户端`2.30.22`的版本添加到您的 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
+ 查看 CloudTrail 日志条目中有关您的应用程序进行 AWS KMS 的 API 调用的`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 密钥交换组的封锁。