本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
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 的最低版本的信息,请参阅此博客文章