本頁面說明如何在 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 通訊協定,請按照下列步驟操作:
- 在訊息處理器設定檔 (
/opt/apigee/customer/application/message-processor.properties) 中進行下列設定:bin_setenv_ext_jvm_opts=-Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
- 重新啟動訊息處理器。
如何停用預設啟用的 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