Настройка SNI между Message Processor Edge и бэкенд-сервером

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Функция указания имени сервера (SNI) позволяет обслуживать несколько серверных служб HTTPS с одного IP-адреса и порта без необходимости использовать один и тот же сертификат TLS. Это расширение протокола TLS. Если на клиенте включена функция SNI, клиент передает имя хоста внутреннего сервера в рамках первоначального рукопожатия TLS. Это позволяет TLS-серверу определить, какой сертификат TLS следует использовать для проверки запроса от клиента.

По умолчанию SNI отключен в компоненте Message Processor в Edge для частного облака, чтобы обеспечить обратную совместимость с существующими внутренними серверами. Если ваш серверный сервис поддерживает SNI, вам нужно включить SNI в компоненте Message Processor. В противном случае запросы API, проходящие через Apigee Edge, будут завершаться с ошибкой TLS Handshake Failures.

В этом документе рассказывается, как:

Подготовка

Идентификация сервера с поддержкой SNI

В этом разделе рассказывается, как определить, включена ли функция SNI на сервере.

  1. Выполните команду openssl и попробуйте подключиться к нужному имени хоста сервера (маршрутизатору Edge или внутреннему серверу) без передачи имени сервера, как показано ниже:
    openssl s_client -connect hostname:port
  2. Вы можете получить сертификаты, но иногда при выполнении команды openssl может произойти сбой подтверждения, как показано ниже:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
  3. Выполните команду openssl и попробуйте подключиться к нужному имени хоста сервера (маршрутизатору Edge или серверу бэкэнда), передав имя сервера, как показано ниже:
    openssl s_client -connect hostname:port -servername hostname
  4. Если на шаге 1 произойдет сбой подтверждения или на шагах 1 и 2 будут получены разные сертификаты, это означает, что на указанном сервере включена функция SNI.
  5. Если вы хотите проверить несколько внутренних серверов, повторите описанные выше действия для каждого из них.

Если вы обнаружите, что на одном или нескольких внутренних серверах включена поддержка SNI, вам нужно будет включить SNI в компоненте Message Processor, как описано ниже. В противном случае запросы API, проходящие через Apigee Edge, будут завершаться с ошибкой Сбои при подтверждении TLS.

Включите SNI между процессорами сообщений Edge и внутренним сервером

В этом разделе рассказывается, как включить SNI между Message Processor Edge и внутренним сервером. SNI можно включить с помощью свойства jsse.enableSNIExtension в компоненте Message Processor. Чтобы настроить любое свойство в Message Processor, используйте токен в соответствии с синтаксисом, описанным в разделе Как настроить Edge.

Чтобы включить SNI в процессорах сообщений, выполните следующие действия:

  1. Как найти токен для свойства jsse.enableSNIExtension
  2. Как включить SNI в Message Processor

Как найти токен для ресурса jsse.enableSNIExtension

Чтобы найти токен для ресурса jsse.enableSNIExtension, выполните следующие действия:

  1. Найдите свойство jsse.enableSNIExtension в исходном каталоге Message Processor /opt/apigee/edge-message-processor/source с помощью следующей команды:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
  2. В результате выполнения этой команды будет показан токен для свойства обработчика сообщений jsse.enableSNIExtension:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}

    Строка между тегами {T}{/T} – это название токена, который можно задать в файле .properties обработчика сообщений.

    Таким образом, токен для свойства jsse.enableSNIExtension будет выглядеть следующим образом:

    conf_system_jsse.enableSNIExtension

Как включить SNI в процессоре сообщений

Ниже описано, как включить SNI в компоненте Apigee Message Processor.

  1. На компьютере Message Processor откройте в редакторе следующий файл: Если его ещё нет, создайте его.
    /opt/apigee/customer/application/message-processor.properties

    Например, чтобы открыть файл с помощью vi, введите следующую команду:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Добавьте в файл свойств строку в следующем формате:
    conf_system_jsse.enableSNIExtension=true
  3. Сохраните изменения.
  4. Убедитесь, что файл свойств принадлежит пользователю apigee, как показано ниже:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Перезапустите Message Processor, как показано ниже.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Убедитесь, что конфигурация SNI обновлена в процессоре сообщений.
  7. Если у вас несколько Message Processor, повторите описанные выше действия для каждого из них.

Как отключить SNI между процессорами сообщений Edge и внутренним сервером

Как правило, после включения SNI проблем не возникает. Однако, если после включения SNI вы заметите проблемы с подключением между процессором сообщений Edge и внутренним сервером, вы всегда можете отключить SNI, выполнив следующие действия.

Чтобы отключить SNI, задайте для свойства jsse.enableSNIExtension значение false в компоненте Message Processor.

Отключите SNI на процессорах сообщений

Ниже описано, как отключить SNI в процессорах сообщений Apigee.

  1. На компьютере Message Processor откройте в редакторе следующий файл: Если его ещё нет, создайте его.
    /opt/apigee/customer/application/message-processor.properties

    Например, чтобы открыть файл с помощью vi, введите следующую команду:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Если строка conf_system_jsse.enableSNIExtension=true есть в файле /opt/apigee/customer/application/message-processor.properties, измените ее следующим образом:
    conf_system_jsse.enableSNIExtension=false
  3. Сохраните изменения.
  4. Убедитесь, что файл свойств принадлежит пользователю apigee, как показано ниже:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Перезапустите Message Processor, как показано ниже.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. Убедитесь, что конфигурация SNI обновлена в процессоре сообщений.
  7. Если у вас несколько Message Processor, повторите описанные выше действия для каждого из них.

Как проверить конфигурацию SNI на процессорах сообщений

В этом разделе рассказывается, как проверить, успешно ли обновлена конфигурация SNI в процессорах сообщений.

Несмотря на то что вы используете токен conf_system_jsse.enableSNIExtension для настройки SNI в Message Processor, вам нужно убедиться, что для свойства jsse.enableSNIExtension задано новое значение.

  1. На компьютере Message Processor найдите свойство jsse.enableSNIExtension в каталоге /opt/apigee/edge-message-processor/conf и проверьте, задано ли для него новое значение, как показано ниже:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
  2. Если конфигурация SNI успешно обновлена в Message Processor, то в файле system.properties будет указано новое значение.

    Пример результата выполнения приведенной выше команды после включения SNI в Message Processor:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true

    Аналогично, образец результата выполнения команды выше после отключения SNI на Message Processor выглядит следующим образом:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false

    В приведенном выше примере обратите внимание, что свойство jsse.enableSNIExtension было обновлено до нового значения true или false в system.properties. Это означает, что SNI успешно включен или отключен в процессоре сообщений.

  3. Если вы по-прежнему видите старое значение свойства jsse.enableSNIExtension, убедитесь, что вы выполнили все шаги, описанные в соответствующем разделе, чтобы правильно включить или отключить SNI. Если вы пропустили какой-либо шаг, повторите все действия заново.
  4. Если вам по-прежнему не удается включить или отключить SNI , обратитесь в службу поддержки Apigee Edge.