Вы просматриваете документацию по 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 на процессорах сообщений, чтобы установить связь с внутренними серверами, поддерживающими SNI.
- При необходимости отключите SNI на обработчиках сообщений.
- Убедитесь, что конфигурация SNI успешно обновлена на процессорах сообщений.
Подготовка
- Если вы не знакомы с SNI, прочитайте статью Использование SNI с пограничным сервером.
- Если вы не знаете, как настроить Edge в частном облаке, прочитайте статью Как настроить Edge.
Идентификация сервера с поддержкой SNI
В этом разделе рассказывается, как определить, включена ли функция SNI на сервере.
-
Выполните команду
opensslи попробуйте подключиться к нужному имени хоста сервера (маршрутизатору Edge или внутреннему серверу) без передачи имени сервера, как показано ниже:openssl s_client -connect hostname:port
-
Вы можете получить сертификаты, но иногда при выполнении команды
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
-
Выполните команду
opensslи попробуйте подключиться к нужному имени хоста сервера (маршрутизатору Edge или серверу бэкэнда), передав имя сервера, как показано ниже:openssl s_client -connect hostname:port -servername hostname
- Если на шаге 1 произойдет сбой подтверждения или на шагах 1 и 2 будут получены разные сертификаты, это означает, что на указанном сервере включена функция SNI.
- Если вы хотите проверить несколько внутренних серверов, повторите описанные выше действия для каждого из них.
Если вы обнаружите, что на одном или нескольких внутренних серверах включена поддержка SNI, вам нужно будет включить SNI в компоненте Message Processor, как описано ниже. В противном случае запросы API, проходящие через Apigee Edge, будут завершаться с ошибкой Сбои при подтверждении TLS.
Включите SNI между процессорами сообщений Edge и внутренним сервером
В этом разделе рассказывается, как включить SNI между Message Processor Edge и внутренним сервером. SNI можно включить с помощью свойства jsse.enableSNIExtension в компоненте Message Processor. Чтобы настроить любое свойство в Message Processor, используйте токен в соответствии с синтаксисом, описанным в разделе Как настроить Edge.
Чтобы включить SNI в процессорах сообщений, выполните следующие действия:
Как найти токен для ресурса jsse.enableSNIExtension
Чтобы найти токен для ресурса jsse.enableSNIExtension, выполните следующие действия:
-
Найдите свойство
jsse.enableSNIExtensionв исходном каталоге Message Processor/opt/apigee/edge-message-processor/sourceс помощью следующей команды:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
-
В результате выполнения этой команды будет показан токен для свойства обработчика сообщений
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.
- На компьютере Message Processor откройте в редакторе следующий файл: Если его ещё нет, создайте его.
/opt/apigee/customer/application/message-processor.properties
Например, чтобы открыть файл с помощью
vi, введите следующую команду:vi /opt/apigee/customer/application/message-processor.properties
-
Добавьте в файл свойств строку в следующем формате:
conf_system_jsse.enableSNIExtension=true
- Сохраните изменения.
-
Убедитесь, что файл свойств принадлежит пользователю
apigee, как показано ниже:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
Перезапустите Message Processor, как показано ниже.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Убедитесь, что конфигурация SNI обновлена в процессоре сообщений.
- Если у вас несколько Message Processor, повторите описанные выше действия для каждого из них.
Как отключить SNI между процессорами сообщений Edge и внутренним сервером
Как правило, после включения SNI проблем не возникает. Однако, если после включения SNI вы заметите проблемы с подключением между процессором сообщений Edge и внутренним сервером, вы всегда можете отключить SNI, выполнив следующие действия.
Чтобы отключить SNI, задайте для свойства jsse.enableSNIExtension значение false в компоненте Message Processor.
Отключите SNI на процессорах сообщений
Ниже описано, как отключить SNI в процессорах сообщений Apigee.
-
На компьютере Message Processor откройте в редакторе следующий файл: Если его ещё нет, создайте его.
/opt/apigee/customer/application/message-processor.properties
Например, чтобы открыть файл с помощью
vi, введите следующую команду:vi /opt/apigee/customer/application/message-processor.properties
-
Если строка
conf_system_jsse.enableSNIExtension=trueесть в файле/opt/apigee/customer/application/message-processor.properties, измените ее следующим образом:conf_system_jsse.enableSNIExtension=false
- Сохраните изменения.
-
Убедитесь, что файл свойств принадлежит пользователю
apigee, как показано ниже:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
Перезапустите Message Processor, как показано ниже.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Убедитесь, что конфигурация SNI обновлена в процессоре сообщений.
- Если у вас несколько Message Processor, повторите описанные выше действия для каждого из них.
Как проверить конфигурацию SNI на процессорах сообщений
В этом разделе рассказывается, как проверить, успешно ли обновлена конфигурация SNI в процессорах сообщений.
Несмотря на то что вы используете токен conf_system_jsse.enableSNIExtension для настройки SNI в Message Processor, вам нужно убедиться, что для свойства jsse.enableSNIExtension задано новое значение.
-
На компьютере Message Processor найдите свойство
jsse.enableSNIExtensionв каталоге/opt/apigee/edge-message-processor/confи проверьте, задано ли для него новое значение, как показано ниже:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
-
Если конфигурация 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 успешно включен или отключен в процессоре сообщений. -
Если вы по-прежнему видите старое значение свойства
jsse.enableSNIExtension, убедитесь, что вы выполнили все шаги, описанные в соответствующем разделе, чтобы правильно включить или отключить SNI. Если вы пропустили какой-либо шаг, повторите все действия заново. - Если вам по-прежнему не удается включить или отключить SNI , обратитесь в службу поддержки Apigee Edge.