Как настроить TLS 1.3 для исходящего трафика

На этой странице объясняется, как настроить TLS 1.3 в Apigee Message Processor для исходящего трафика (трафика между Message Processor и бэкенд-сервером).

Подробнее о TLS 1.3 в Java читайте в примечаниях к выпуску JDK 8u261.

Процедура включения TLS 1.3 зависит от используемой версии Java. Чтобы узнать, какая версия Java установлена в Message Processor, ознакомьтесь с разделом Как проверить версию Java в Message Processor ниже.

TLS 1.3 и версии Java

Функция TLS 1.3 была представлена в следующих версиях Java:

  • 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 уже должен быть включен по умолчанию в ролях клиента (Message Processor действует как клиент для исходящих TLS-подключений), поэтому вам не нужно предпринимать никаких действий:

  • Oracle JDK 8u341 или более поздней версии;
  • OpenJDK 8u352 или более поздней версии;

Чтобы использовать TLS 1.3, должны выполняться все следующие условия:

  • Базовая версия Java в Message Processor должна поддерживать TLS 1.3.
  • В Java на Message Processor должен быть включен протокол TLS версии 1.3.
  • В приложении Message Processor должен быть включен протокол TLS версии 1.3.

Как включить TLS v1.3 в Java, если он не включен по умолчанию.

В этом разделе объясняется, как включить TLS v1.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 версий 1, 1.1, 1.2 и 1.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. Перезапустите Message Processor.
>

Как отключить TLS v1.3, если он включен по умолчанию

Если вы используете Oracle JDK 8u341 или более поздней версии либо OpenJDK 8u352 или более поздней версии, TLSv1.3 включен по умолчанию для клиентов. Если вы хотите отключить TLS v1.3 в таких случаях, у вас есть два варианта:

  • Настройте SSLInfo целевого сервера и убедитесь, что TLSv1.3 не указан в списке протоколов. Подробнее об элементах конфигурации TargetEndpoint для TLS/SSL… Примечание. Если в конфигурации целевого сервера не указаны протоколы, то в качестве вариантов в рукопожатии клиента будут отправлены все протоколы, поддерживаемые Java.
  • Отключите TLS v1.3 в обработчике сообщений, полностью отключив протокол. Подробнее о том, как настроить протокол TLS в Message Processor…

Как проверить версию Java в Message Processor

Чтобы проверить версию Java, установленную в Message Processor, войдите в узел Message Processor и выполните следующую команду:

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 поддерживает два шифра TLS версии 1.3:

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256

Чтобы проверить, поддерживает ли целевой сервер TLS 1.3 и хотя бы один из указанных выше шифров, можно использовать openssl. Обратите внимание, что в этом примере используется утилита openssl11, в которой включен протокол TLS версии 1.3.

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