

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

# 啟用混合式後量子 TLS
<a name="pqtls-details"></a>

AWS SDKs和工具具有不同語言和執行時間的密碼編譯功能和組態。 AWS 開發套件或工具目前提供 PQ TLS 支援的三種方式：

**Topics**
+ [預設啟用 PQ TLS SDKs](#pq-tls-default)
+ [選擇加入 PQ TLS 支援](#pq-tls-opt-in)
+ [依賴 System OpenSSL SDKs](#pq-tls-open-ssl)
+ [不打算支援 PQ TLS AWS SDKs 和工具](#pq-tls-nosupport)

## 預設啟用 PQ TLS SDKs
<a name="pq-tls-default"></a>

**注意**  
截至 6-Nov-2025 日，適用於 MacOS 和 Windows 的 AWS SDK 及其基礎 CRT 程式庫使用 TLS 的系統程式庫，因此這些平台上的 PQ TLS 功能通常由系統層級支援決定。

### AWS 適用於 Go 的 SDK
<a name="pq-sdk-go"></a>

 AWS SDK for Go 使用 Golang 自有的 TLS 實作，由其標準程式庫提供。Golang 支援並偏好自 v1.24 起的 PQ TLS，因此適用於 Go 的 AWS SDK 使用者只需將 Golang 升級到 v1.24 即可啟用 PQ TLS。

### AWS 適用於 JavaScript 的 SDK （瀏覽器）
<a name="pq-sdk-javascript"></a>

適用於 JavaScript 的 AWS SDK （瀏覽器） 使用瀏覽器的 TLS 堆疊，因此如果瀏覽器執行時間支援並偏好，開發套件會交涉 PQ TLS。Firefox 在 v132.0 中啟動了對 PQ TLS 的支援。Chrome 宣布支援 v131 中的 PQ TLS。Edge 支援 v120 桌面版和 Android 版 140 版中的選擇加入 PQ TLS。

### AWS 適用於 Node.js 的 SDK
<a name="pq-sdk-nodejs"></a>

從 Node.js v22.20 (LTS) 和 v24.9.0 開始，Node.js 靜態連結和綁定 OpenSSL 3.5。這表示根據預設，這些版本和後續版本會啟用並偏好 PQ TLS。

### AWS 適用於 Kotlin 的 SDK
<a name="pq-sdk-kotlin"></a>

Kotlin SDK 自 v1.5.78 起支援並偏好 Linux 上的 PQ TLS。由於適用於 Kotlin 的 CRT 型用戶端 AWS SDK 倚賴 MacOS 和 Windows 上的 TLS 系統程式庫，因此 PQ TLS 的支援將取決於這些基礎系統程式庫。

### AWS 適用於 Rust 的 SDK
<a name="pq-sdk-rust"></a>

適用於 Rust 的 AWS SDK 會為每個服務用戶端分配不同的套件 （在 Rust 生態系統中稱為「箱子」)。這些都是在合併的 GitHub 儲存庫中管理，但每個服務用戶端都遵循自己的版本和發行節奏。合併 SDK 在 8/29/25 發行了 PQ TLS 偏好設定，因此在該日期之後發行的任何個別服務用戶端版本預設會支援並偏好 PQ TLS。

 您可以導覽至相關的 crates.io 版本 URL （例如 AWS 促銷抵用金，'s [在這裡](https://crates.io/crates/aws-sdk-paymentcryptography/versions))，並尋找 29-Aug-25 日之後發佈的第一個版本，以判斷支援特定服務用戶端 PQ TLS 的最低版本。在 29-Aug-25都會啟用 PQ TLS，且預設為偏好。

## 選擇加入 PQ TLS 支援
<a name="pq-tls-opt-in"></a>

### AWS 適用於 C\+\+ 的 SDK
<a name="pq-sdk-cplusplus"></a>

根據預設，C\+\+ 開發套件會使用平台原生用戶端，例如 libcurl 和 WinHttp。Libcurl 通常依賴系統 OpenSSL for TLS，因此 PQ TLS 預設只有在系統 OpenSSL ≥ v3.5 時才啟用。您可以在 C\+\+ SDK v1.11.673 或更新版本中覆寫此預設值，並選擇加入支援並啟用 PQ TLS 的 AwsCrtHttpClient。

建立選擇加入 PQ TLS 的注意事項 您可以使用[此指令碼](https://github.com/aws/aws-sdk-cpp/blob/main/prefetch_crt_dependency.sh)擷取開發套件的 CRT 相依性。[此處](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/sdk-from-source.html)和[此處](https://github.com/aws/aws-sdk-cpp/tree/main?tab=readme-ov-file#building-from-source)說明從來源建置 SDK，但請注意，您可能需要一些額外的 CMake 旗標：

```
-DUSE_CRT_HTTP_CLIENT=ON \
-DUSE_TLS_V1_2=OFF \
-DUSE_TLS_V1_3=ON \
-DUSE_OPENSSL=OFF \
```

### AWS 適用於 Java 的 SDK
<a name="pq-sdk-java"></a>

 從 v2 開始， AWS SDK for Java 提供可設定為執行 PQ TLS 的 AWS 通用執行期 (AWS CRT) HTTP 用戶端。自 v2.35.11 起，AwsCrtHttpClient 預設會啟用並偏好 PQ TLS，無論在何處使用。

## 依賴 System OpenSSL SDKs
<a name="pq-tls-open-ssl"></a>

數個 AWS SDKs和工具取決於系統的 TLS 的 libcrypto/libssl 程式庫。最常用的系統程式庫是 OpenSSL。3.5 版中已啟用 OpenSSL 的 PQ TLS 支援，因此設定 PQ TLS 的這些 SDKs 和工具最簡單的方式是在至少已安裝 OpenSSL 3.5 的作業系統分發上使用它。

您也可以將 Docker 容器設定為使用 OpenSSL 3.5，在支援 Docker 的任何系統上啟用 PQ TLS。如需為 [Python 設定此範例，請參閱 Python 中的後量子 TLS](https://aws.amazon.com/blogs/security/post-quantum-tls-in-python/)。

### AWS CLI
<a name="pq-tls-cli"></a>

自 v2.34.54 起，適用於 Linux 的 [AWS CLI 安裝程式](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)會綁定 OpenSSL 3.5.6，因此預設會針對 Linux 上的該版本和後續版本啟用並偏好 PQ TLS。 AWS Linux 上的 CLI 使用者可以透過升級至 CLI v2.34.54 或更新版本來啟用 AWS PQ TLS。

對於 MacOS，請透過 [Homebrew](https://brew.sh/) 安裝 AWS CLI，並確保 Homebrew 提供的 OpenSSL 已升級至 3.5\+ 版。您可以使用「brew install openssl@3.6」執行此操作，並使用「brew list \| grep openssl」進行驗證。

如需驗證安裝的step-by-step說明，請參閱 [github 儲存庫](https://github.com/aws-samples/sample-post-quantum-tls-python/)和隨附的[部落格文章](https://aws.amazon.com/blogs/security/post-quantum-tls-in-python/)。

### AWS 適用於 PHP 的 SDK
<a name="pq-tls-php"></a>

適用於 PHP 的 AWS SDK 依賴系統 libssl/libcrypto。若要使用 PQ TLS，請在至少已安裝 OpenSSL 3.5 的作業系統分佈上使用此開發套件。

### AWS 適用於 Python 的 SDK (Boto3)
<a name="pq-tls-python"></a>

適用於 Python 的 AWS SDK (Boto3) 依賴 Python 安裝所連結的 OpenSSL 程式庫。行為因平台而異：

------
#### [ Windows and macOS (python.org installer) ]

適用於 Windows (.exe) 和 macOS (.pkg) 的官方 [python.org](https://www.python.org/) 安裝程式會綁定自己的 OpenSSL 程式庫。從 Python 3.14.6 開始，綁定的 OpenSSL 3.5.7 預設支援並偏好 PQ TLS。不需要額外的組態。

------
#### [ macOS (Homebrew) ]

由於 Homebrew 的 [python@3.14](https://www.python.org/downloads/release/python-3140/) 連結針對 Homebrew 的 openssl@3 共用程式庫，因此從 Homebrew OpenSSL 3.5\+ 開始，預設支援並偏好 PQ TLS。您可以使用下列方法驗證您的 OpenSSL 版本：

`python3.14 -c "import ssl; print(ssl.OPENSSL_VERSION)"`

如果您的版本低於 3.5，升級搭配沖煮升級會開啟sl@3。

------
#### [ Linux ]

在 Linux 上，Python 會動態連結到系統的共用 libssl。安裝 OpenSSL 3.5\+ 是必要但不足的，因為系統的密碼編譯政策也必須在其預設 TLS 組態中包含後量子群組。

對於 Amazon Linux 2023 (AL2023.12 或更高版本），啟用具有下列項目的 PQ TLS：

`sudo update-crypto-policies --set DEFAULT:PQ`

如需詳細資訊，請參閱在 [AL2023 上啟用後量子密碼編譯 (PQC)](https://docs.aws.amazon.com/linux/al2023/ug/crypto-policies-pq.html)。

如需其他 Linux 發行版本，請參閱發行版本有關設定預設 TLS 群組的文件。

您可以在 TLS 交握中檢查 X25519MLKEM768 金鑰交換，以驗證 PQ TLS 是否正常運作。

------

### AWS 適用於 Ruby 的 SDK
<a name="pq-tls-ruby"></a>

適用於 Ruby 的 AWS SDK 依賴系統 libssl/libcrypto。若要使用 PQ TLS，請在至少已安裝 OpenSSL 3.5 的作業系統分佈上使用此開發套件。

### AWS 適用於 .NET 的 SDK
<a name="pq-tls-dotnet"></a>

在 Linux 上，適用於 .NET 的 AWS SDK 依賴系統 libssl/libcrypto。若要使用 PQ TLS，請在至少已安裝 OpenSSL 3.5 的作業系統分佈上使用此開發套件。在 Windows 和 MacOS 上，PQ TLS 從 [.NET 10 ](https://devblogs.microsoft.com/dotnet/post-quantum-cryptography-in-dotnet/)和 [Windows 11 ](https://techcommunity.microsoft.com/blog/microsoft-security-blog/post-quantum-cryptography-apis-now-generally-available-on-microsoft-platforms/4469093)開始可用。在 MacOS 上，可以透過選擇加入 Apple 的 Network.framework 來啟用 TLS 1.3 支援 (PQ TLS 的先決條件），如[此處](https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/libraries#tls-13-for-macos-client)所述。假設最低 .NET 版本為 10，則應啟用 PQ TLS。

## 不打算支援 PQ TLS AWS SDKs 和工具
<a name="pq-tls-nosupport"></a>

目前沒有支援下列語言 SDKs和工具的計劃：
+ AWS 適用於 SAP 的 SDK
+ AWS 適用於 Swift 的 SDK
+ AWS 適用於 Windows PowerShell 的工具