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

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

TLS在 Java 版中SDK使用

AWS SDK for Java 使用其底层 Java 平台的TLS功能。在本主题中,我们将展示使用 Amazon Corrett JDK o 17 使用的开放式实现的示例。

要使用 AWS 服务,底层JDK必须支持最低版本 TLS 1.2,但建议使用 TLS 1.3。

用户应查阅他们使用的 Java 平台的文档,SDK以了解默认情况下启用了哪些TLS版本以及如何启用和禁用特定TLS版本。

如何查看TLS版本信息

使用 OpenJDK,以下代码显示了如何使用SSLContext来打印支持哪些TLS/SSL版本。

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

例如,Amazon Corretto 17(JDKOpen)会生成以下输出。

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

要查看SSL握手的操作以及使用的版本,可以使用系统属性 java x.net.deb TLS ug。

例如,运行使用的 Java 应用程序TLS。

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版本

f SDK or Java 始终首选平台和服务支持的最新TLS版本。如果您想强制使用特定的最低TLS版本,请查阅您的 Java 平台的文档。

对于JDK基于开放的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端点迁移到 TLS 1.2 的最低版本的信息,请参阅此博客文章