本页面介绍了如何在 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 正常运行,必须满足以下所有条件:
- Message Processor 上的底层 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
。
如需了解如何在 Edge 组件中设置 JVM 属性,请参阅更改其他 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