設定南端流量的 TLS 1.3

本頁面說明如何在 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 1.3 版,因此您不需要採取任何行動:

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

為了讓 TLS v1.3 正常運作,下列所有條件都必須符合:

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

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

本節說明如何在使用以下任一版本的 Java 時啟用 TLS 1.3 版:

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

在訊息處理器中,設定 Java 屬性 jdk.tls.client.protocols。值以半形逗號分隔,可包含一或多個 TLSv1TLSv1.1TLSv1.2TLSv1.3SSLv3

舉例來說,設定 -Djdk.tls.client.protocols=TLSv1.2,TLSv1.3 即可啟用用戶端通訊協定 TLSv1.2TLSv1.3

如要瞭解如何在 Edge 元件中設定 JVM 屬性,請參閱「變更其他 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 v1.3 時停用該功能

如果您使用的是 Oracle JDK 8u341 以上版本或 OpenJDK 8u352 以上版本,系統會預設為用戶端啟用 TLSv1.3。如果您希望停用 TLS 1.3 版,有以下兩種方法:

  • 設定目標伺服器的 SSLInfo,並確認通訊協定清單中不會提及 TLSv1.3。請參閱 TLS/SSL 目標端點設定元素注意:如果目標伺服器設定中未指定通訊協定,則 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 1.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