在 TLS for Java 中使用 SDK - AWS SDK for Java 2.x

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

在 TLS for Java 中使用 SDK

AWS SDK for Java 使用其基礎 Java 平台的 TLS 功能。在本主題中,我們會展示使用 Amazon Corretto 17 所用 OpenJDK 實作的範例。

若要使用 AWS 服務,基礎 JDK 必須支援最低版本的 TLS 1.2,但建議使用 TLS 1.3。

使用者應查閱其搭配 SDK 使用的 Java 平台文件,以了解預設啟用哪些 TLS 版本,以及如何啟用和停用特定 TLS 版本。

如何檢查 TLS 版本資訊

使用 OpenJDK,下列程式碼顯示使用 SSLContext 來列印支援的 TLS/SSL 版本。

System.out.println(Arrays.toString(SSLContext.getDefault().getSupportedSSLParameters().getProtocols()));

例如,Amazon Corretto 17 (OpenJDK) 會產生下列輸出。

[TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, SSLv3, SSLv2Hello]

若要查看執行中的 SSL 交握和使用的 TLS 版本,您可以使用系統屬性 javax.net.debug

例如,執行使用 TLS 的 Java 應用程式。

java app.jar -Djavax.net.debug=ssl:handshake

應用程式會記錄 SSL 交握,如下所示。

... javax.net.ssl|DEBUG|10|main|2022-12-23 13:53:12.221 EST|ClientHello.java:641|Produced ClientHello handshake message ( "ClientHello": { "client version" : "TLSv1.2", ... javax.net.ssl|DEBUG|10|main|2022-12-23 13:53:12.295 EST|ServerHello.java:888|Consuming ServerHello handshake message ( "ServerHello": { "server version" : "TLSv1.2", ...

強制執行最低 TLS 版本

SDK for Java 一律偏好平台和服務支援的最新 TLS 版本。如果您想要強制執行特定最低 TLS 版本,請參閱 Java 平台的文件。

對於 OpenJDK 型 JVMs,您可以使用系統屬性 jdk.tls.client.protocols

例如,如果您希望應用程式中的 SDK 服務用戶端使用 TLS 1.2,即使 TLS 1.3 可用,請提供下列系統屬性。

java app.jar -Djdk.tls.client.protocols=TLSv1.2

AWS API 端點升級至 TLS 1.2

如需移至 AWS API 1.2 的最低版本之 TLS 端點的相關資訊,請參閱此部落格文章