Konfigurowanie protokołu TLS 1.3 w ruchu na południe

Na tej stronie dowiesz się, jak skonfigurować TLS 1.3 w procesorach komunikatów Apigee na potrzeby ruchu wychodzącego (ruchu między procesorem komunikatów a serwerem backendu).

Więcej informacji o funkcji TLS 1.3 w języku Java znajdziesz w informacjach o wersji aktualizacji JDK 8u261.

Procedura włączania protokołu TLS 1.3 zależy od używanej wersji Javy. Aby dowiedzieć się, jaka wersja Javy jest zainstalowana w procesorze komunikatów, zapoznaj się z sekcją Sprawdzanie wersji Javy w procesorze komunikatów poniżej.

TLS 1.3 i wersje Javy

Funkcja TLS 1.3 została wprowadzona w tych wersjach Javy:

  • Oracle JDK 8u261
  • OpenJDK 8u272

W tych wersjach Javy funkcja TLS 1.3 jest dostępna, ale nie jest domyślnie włączona w rolach klienta:

  • Oracle JDK 8u261 lub nowszy, ale starszy niż Oracle JDK 8u341
  • OpenJDK 8u272 lub nowszy, ale starszy niż OpenJDK 8u352

Jeśli używasz jednej z tych wersji, musisz włączyć protokół TLS w wersji 1.3 zgodnie z opisem w artykule Jak włączyć protokół TLS w wersji 1.3, gdy nie jest on domyślnie włączony.

Jeśli używasz jednej z tych wersji, protokół TLS w wersji 1.3 powinien być już domyślnie włączony w rolach klienta (procesor komunikatów działa jako klient w przypadku połączeń TLS southbound), więc nie musisz nic robić:

  • Oracle JDK 8u341 lub nowszy,
  • OpenJDK 8u352 lub nowszy,

Aby protokół TLS w wersji 1.3 działał, muszą być spełnione wszystkie te warunki:

  • Podstawowa wersja Javy w procesorze komunikatów musi obsługiwać TLS 1.3.
  • Protokół TLS 1.3 musi być włączony w języku Java w procesorze komunikatów.
  • W aplikacji procesora komunikatów musi być włączony protokół TLS w wersji 1.3.

Jak włączyć protokół TLS w wersji 1.3 w języku Java, gdy nie jest on domyślnie włączony.

W tej sekcji wyjaśniamy, jak włączyć TLS w wersji 1.3, jeśli używasz jednej z tych wersji Javy:

  • Oracle JDK 8u261 lub nowszy, ale starszy niż Oracle JDK 8u341
  • OpenJDK 8u272 lub nowszy, ale starszy niż OpenJDK 8u352

W procesorze komunikatów ustaw właściwość Java jdk.tls.client.protocols. Wartości są rozdzielone przecinkami i mogą zawierać co najmniej jedną z tych wartości: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 i SSLv3.

Na przykład ustawienie -Djdk.tls.client.protocols=TLSv1.2,TLSv1.3 włącza protokoły klienta TLSv1.2 i TLSv1.3.

Aby dowiedzieć się, jak ustawić właściwości JVM w komponencie Edge, przeczytaj artykuł o zmienianiu innych właściwości JVM.

Aby włączyć protokoły TLS w wersji 1, 1.1, 1.2 i 1.3:

  1. W pliku konfiguracji procesora komunikatów (/opt/apigee/customer/application/message-processor.properties) ustaw tę konfigurację:
       bin_setenv_ext_jvm_opts=-Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
  2. Uruchom ponownie procesor komunikatów.
>

Jak wyłączyć protokół TLS 1.3, gdy jest domyślnie włączony

Jeśli używasz Oracle JDK 8u341 lub nowszego albo OpenJDK 8u352 lub nowszego, protokół TLSv1.3 jest domyślnie włączony dla klientów. Jeśli w takich przypadkach chcesz wyłączyć TLS v1.3, masz 2 możliwości:

  • Skonfiguruj SSLInfo serwera docelowego i upewnij się, że protokół TLSv1.3 nie jest wymieniony na liście protokołów. Zobacz Elementy konfiguracji TLS/SSL TargetEndpoint. Uwaga: jeśli w konfiguracji serwera docelowego nie określono żadnych protokołów, wszystkie protokoły obsługiwane przez Javę zostaną wysłane jako opcje w uzgadnianiu połączenia klienta.
  • Wyłącz protokół TLS w wersji 1.3 w procesorze komunikatów, całkowicie wyłączając protokół. Zobacz Ustawianie protokołu TLS w procesorze komunikatów.

Sprawdzanie wersji Javy w procesorze komunikatów

Aby sprawdzić wersję Javy zainstalowaną w procesorze komunikatów, zaloguj się w węźle procesora komunikatów i wykonaj to polecenie:

java -version

Przykładowe dane wyjściowe poniżej pokazują, że zainstalowana jest wersja 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)

Obsługiwane mechanizmy szyfrowania

Obecnie Java 8 obsługuje 2 szyfry TLS 1.3:

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256

Możesz użyć openssl, aby sprawdzić, czy serwer docelowy obsługuje protokół TLS w wersji 1.3 i co najmniej 1 z powyższych szyfrów. Pamiętaj, że w tym przykładzie używamy narzędzia openssl11, które ma włączony protokół TLS w wersji 1.3.

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