本页面介绍了如何在 Apigee 消息处理器中为南向流量(消息处理器与后端服务器之间的流量)配置 TLS 1.3。
如需详细了解 Java 中的 TLS 1.3 功能,请参阅 JDK 8u261 更新版本说明。
启用 TLS 1.3 的过程取决于您使用的 Java 版本。请参阅下文中的 检查消息处理器中的 Java 版本,了解消息处理器中安装的 Java 版本。
TLS v1.3 和 Java 版本
以下 Java 版本中引入了 TLS 1.3 功能:
- Oracle JDK 8u261
- OpenJDK 8u272
在以下 Java 版本中,TLS v1.3 功能存在,但默认情况下未在客户端角色中启用:
- Oracle JDK 8u261 或更高版本,但低于 Oracle JDK 8u341
- OpenJDK 8u272 或更高版本,但低于 OpenJDK 8u352
如果您使用的是其中一个版本,则需要启用 TLS v1.3,如如何在默认未启用 TLS v1.3 时启用它中所述。
如果您使用的是以下版本之一,则客户端角色中默认应已启用 TLS v1.3(消息处理器充当南向 TLS 连接的客户端),因此您无需执行任何操作:
- Oracle JDK 8u341 或更高版本
- OpenJDK 8u352 或更高版本
要使 TLS v1.3 正常运行,必须满足以下所有条件:
- 消息处理器 上的底层 Java 必须支持 TLS v1.3。
- 必须在消息处理器上的 Java 中启用 TLS v1.3。
- 必须在消息处理器应用中启用 TLS v1.3。
如何在 Java 中启用 TLS v1.3(如果默认未启用)。
本部分介绍了如何在您使用以下某个 Java 版本时启用 TLS v1.3:
- Oracle JDK 8u261 或更高版本,但低于 Oracle JDK 8u341
- OpenJDK 8u272 或更高版本,但低于 OpenJDK 8u352
在消息处理器中,设置 Java 属性 jdk.tls.client.protocols。
值以英文逗号分隔,可以包含 TLSv1、TLSv1.1、TLSv1.2、TLSv1.3 和 SSLv3 中的一个或多个。
例如,设置 -Djdk.tls.client.protocols=TLSv1.2,TLSv1.3 会启用客户端协议 TLSv1.2 和 TLSv1.3。
请参阅更改其他 JVM 属性,了解如何在 Edge 组件中设置 JVM 属性。
如需启用 TLS v1、v1.1、v1.2 和 v1.3 协议,请执行以下操作:
- 在消息处理器配置文件 (
/opt/apigee/customer/application/message-processor.properties) 中设置以下配置:bin_setenv_ext_jvm_opts=-Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
- 重启消息处理器。
如何在 TLS v1.3 默认启用的情况下将其停用
如果您使用的是 Oracle JDK 8u341 或更高版本,或者 OpenJDK 8u352 或更高版本,则默认情况下会为客户端启用 TLSv1.3。 如果您希望在这种情况下停用 TLS v1.3,则有两种选择:
- 配置目标服务器的 SSLInfo,并确保协议列表中未提及 TLSv1.3。请参阅 TLS/SSL TargetEndpoint 配置元素。注意:如果目标服务器配置中未指定任何协议,则 Java 支持的所有协议都将作为客户端握手中的选项发送。
- 通过完全停用协议,在消息处理器中停用 TLS v1.3。请参阅 在消息处理器上设置 TLS 协议。
检查消息处理器中的 Java 版本
如需检查消息处理器中安装的 Java 版本,请登录消息处理器节点并执行以下命令:
java -version
以下示例输出显示已安装 OpenJDK 8u312。
$ java -version openjdk version "1.8.0_312" OpenJDK Runtime Environment (build 1.8.0_312-b07) OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
支持的加密方式
目前,Java 8 支持 2 种 TLS v1.3 加密方式:
- TLS_AES_256_GCM_SHA384
- TLS_AES_128_GCM_SHA256
您可以使用 openssl 检查目标服务器是否支持 TLS v1.3 以及上述至少一种加密方式。请注意,此示例使用启用了 TLS v1.3 的 openssl11 实用程序。
$ openssl11 s_client -ciphersuites "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256" -connect target_host:target_port -tls1_3