Настройка SNI между пограничным процессором сообщений и внутренним сервером

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

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

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

В этом документе объясняется, как сделать следующее:

Прежде чем начать

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

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

  1. Выполните команду openssl и попытайтесь подключиться к соответствующему имени хоста сервера (пограничному маршрутизатору или внутреннему серверу), не передавая имя сервера , как показано ниже:
    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 и попытайтесь подключиться к соответствующему имени хоста сервера (пограничному маршрутизатору или внутреннему серверу) , передав имя сервера , как показано ниже:
    openssl s_client -connect hostname:port -servername hostname
    
  4. Если на шаге 1 вы получаете сбой квитирования или получаете разные сертификаты на шаге 1 и 2, это означает, что указанный сервер поддерживает SNI.
  5. Если вы хотите проверить это для нескольких внутренних серверов, вам необходимо повторить описанные выше шаги для каждого внутреннего сервера.

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

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

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

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

  1. Найдите токен для свойства jsse.enableSNIExtension.
  2. Включите SNI на процессоре сообщений

Найдите токен для свойства jsse.enableSNIExtension .

Следующие шаги описывают, как найти токен для свойства jsse.enableSNIExtension :

  1. Найдите свойство jsse.enableSNIExtension в исходном каталоге процессора сообщений /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.

  1. На компьютере с процессором сообщений откройте в редакторе следующий файл. Если он еще не существует, то создайте его.
    /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. Перезапустите процессор сообщений, как показано ниже:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Убедитесь, что конфигурация SNI обновлена ​​на процессоре сообщений.
  7. Если у вас несколько процессоров сообщений, повторите описанные выше шаги для всех процессоров сообщений.

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

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

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

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

Следующие шаги описывают, как отключить SNI на процессорах сообщений Apigee.

  1. На компьютере с процессором сообщений откройте в редакторе следующий файл. Если он еще не существует, то создайте его.
    /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. Перезапустите процессор сообщений, как показано ниже:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Убедитесь, что конфигурация SNI обновлена ​​на процессоре сообщений.
  7. Если у вас более одного процессора сообщений, повторите вышеуказанные шаги для всех процессоров сообщений.

Проверка конфигурации SNI на процессорах сообщений

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

Даже если вы используете токен conf_system_jsse.enableSNIExtension для настройки SNI в процессоре сообщений, вам необходимо убедиться, что фактическому свойству jsse.enableSNIExtension присвоено новое значение.

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

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

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

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

    /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 .