适用于 Java 的 AWS SDK 的 TLS 支持 - 适用于 Java 的 AWS SDK 1.x

适用于 Java 的 AWS SDK 1.x 版本自 2024 年 7 月 31 日起已进入维护模式,并将于 2025 年 12 月 31 日终止支持。我们建议您迁移到 AWS SDK for Java 2.x 以继续获得新功能、可用性改进和安全更新。

适用于 Java 的 AWS SDK 的 TLS 支持

以下信息仅适用于 Java SSL 实现(适用于 Java 的 AWS SDK 中的默认 SSL 实现)。如果您使用的是其他 SSL 实现,请参阅与该特定 SSL 实现相关的信息,以了解如何强制执行 TLS 版本。

如何查看 TLS 版本

请查阅 Java 虚拟机 (JVM) 提供商的文档,以确定您的平台支持哪些 TLS 版本。对于某些 JVM,以下代码将打印支持哪些 SSL 版本。

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

要查看 SSL 握手的运行情况以及使用的 TLS 版本,可使用系统属性 javax.net.debug

java app.jar -Djavax.net.debug=ssl
注意

TLS 1.3 与适用于 Java 的 SDK 版本 1.9.5 至 1.10.31 不兼容。有关更多信息,请参阅以下博客文章。

https://aws.amazon.com/blogs/developer/tls-1-3-incompatibility-with-aws-sdk-for-java-versions-1-9-5-to-1-10-31/

强制实施最低 TLS 版本

SDK 始终会将平台和服务支持的最新 TLS 版本作为其首选。如果您希望强制指定特定的最低 TLS 版本,请查阅 JVM 的文档。对于基于 OpenJDK 的 JVM,您可以使用系统属性 jdk.tls.client.protocols

java app.jar -Djdk.tls.client.protocols=PROTOCOLS

有关支持的 PROTOCOLS 值,请参阅您的 JVM 文档。