TLS在 Java 版中SDK使用 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

TLS在 Java 版中SDK使用

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

要使用 Amazon Web Services 服务,底层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

Amazon API端点升级到 TLS 1.2

有关 Amazon API端点迁移到 TLS 1.2 的最低版本的信息,请参阅此博客文章