設定南端流量的 TLS 1.3

本頁面說明如何在 Apigee 訊息處理器中,為南向流量 (訊息處理器與後端伺服器之間的流量) 設定 TLS 1.3。

如要進一步瞭解 Java 的 TLS 1.3 功能,請參閱 JDK 8u261 更新版本資訊。

啟用 TLS 1.3 的程序取決於您使用的 Java 版本。請參閱下方的「 檢查訊息處理器中的 Java 版本」,瞭解訊息處理器中安裝的 Java 版本。

TLS 1.3 版和 Java 版本

TLS 1.3 功能是在下列 Java 版本中推出:

  • Oracle JDK 8u261
  • OpenJDK 8u272

在下列 Java 版本中,TLS 1.3 版功能存在,但用戶端角色預設未啟用:

  • Oracle JDK 8u261 以上版本,但低於 Oracle JDK 8u341
  • OpenJDK 8u272 以上版本,但低於 OpenJDK 8u352

如果您使用的是其中一個版本,請按照「如何在預設未啟用 TLS 1.3 時啟用」一節的說明啟用 TLS 1.3。

如果您使用的是下列其中一個版本,用戶端角色預設應已啟用 TLS 1.3 版 (訊息處理器會做為南向 TLS 連線的用戶端),因此您不需要採取任何行動:

  • Oracle JDK 8u341 以上版本
  • OpenJDK 8u352 以上版本

如要使用 TLS 1.3 版,必須符合下列所有條件:

  • 訊息處理器上的基礎 Java 必須支援 TLS 1.3 版。
  • 必須在訊息處理器的 Java 中啟用 TLS v1.3。
  • 必須在訊息處理器應用程式中啟用 TLS 1.3 版。

如何在 Java 中啟用 TLS v1.3 (如果預設未啟用)。

本節說明如何啟用 TLS 1.3 版,以防您使用下列其中一個 Java 版本:

  • 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 通訊協定,請按照下列步驟操作:

  1. 在訊息處理器設定檔 (/opt/apigee/customer/application/message-processor.properties) 中進行下列設定:
       bin_setenv_ext_jvm_opts=-Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
  2. 重新啟動訊息處理器。
>

如何停用預設啟用的 TLS 1.3

如果您使用的是 Oracle JDK 8u341 以上版本,或 OpenJDK 8u352 以上版本,用戶端預設會啟用 TLSv1.3。在這種情況下,如要停用 TLS 1.3 版,有兩種做法:

  • 設定目標伺服器的 SSLInfo,並確保通訊協定清單中未提及 TLSv1.3。請參閱「 TLS/SSL TargetEndpoint 設定元素」。注意:如果目標伺服器設定中未指定任何通訊協定,系統會將 Java 支援的所有通訊協定,做為用戶端握手選項傳送。
  • 完全停用通訊協定,即可在訊息處理器中停用 TLS 1.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 1.3 加密:

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256

您可以使用 openssl,檢查目標伺服器是否支援 TLS 1.3 版,以及是否支援至少一種上述加密。請注意,這個範例使用已啟用 TLS 1.3 版的 openssl11 公用程式。

$ openssl11 s_client -ciphersuites "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256" -connect target_host:target_port -tls1_3