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

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

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

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

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

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

Идентификация сервера с поддержкой 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 Handshake Failures .

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

В этом разделе объясняется, как включить SNI между обработчиком сообщений Edge и бэкэнд-сервером. 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 Message Processor.

  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 между обработчиками сообщений Edge и бэкэнд-сервером.

Как правило, после включения SNI проблем возникнуть не должно. Однако, если после включения SNI вы заметите какие-либо проблемы с подключением между Edge Message Processor и бэкэнд-сервером, вы всегда можете отключить 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. Если в файле /opt/apigee/customer/application/message-processor.properties есть строка conf_system_jsse.enableSNIExtension=true , измените её следующим образом:
    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 .

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

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

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

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

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

    Идентификация сервера с поддержкой 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 Handshake Failures .

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

    В этом разделе объясняется, как включить SNI между обработчиком сообщений Edge и бэкэнд-сервером. 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 Message Processor.

    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 между обработчиками сообщений Edge и бэкэнд-сервером.

    Как правило, после включения SNI проблем возникнуть не должно. Однако, если после включения SNI вы заметите какие-либо проблемы с подключением между Edge Message Processor и бэкэнд-сервером, вы всегда можете отключить 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. Если в файле /opt/apigee/customer/application/message-processor.properties есть строка conf_system_jsse.enableSNIExtension=true , измените её следующим образом:
      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 .