Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
API-прокси функционирует как сопоставление общедоступной конечной точки с вашим бэкэнд-сервисом. Виртуальный хост определяет способ доступа приложения к общедоступному API-прокси. Например, виртуальный хост определяет, можно ли получить доступ к API-прокси с использованием TLS. При настройке API-прокси отредактируйте его определение ProxyEndpoint, чтобы настроить используемые им виртуальные хосты.
TargetEndpoint — это исходящий эквивалент ProxyEndpoint. TargetEndpoint функционирует как HTTP-клиент от Edge к бэкэнд-сервису. При создании API-прокси вы можете настроить его на использование нуля или более TargetEndpoint.
Узнать больше:
- О протоколе TLS/SSL
- Использование TLS с Edge
- О виртуальных хостах
- Магазины ключей и магазины доверия
- Справочник по настройке API-прокси
Настройка целевой конечной точки или целевого сервера
Для настройки TargetEndpoint отредактируйте XML-объект, определяющий TargetEndpoint. Вы можете отредактировать TargetEndpoint, отредактировав XML-файл, определяющий TargetEndpoint в вашем API-прокси, или отредактировать его в пользовательском интерфейсе управления Edge.
Чтобы отредактировать TargetEndpoint с помощью пользовательского интерфейса управления Edge:
- Войдите в пользовательский интерфейс управления Edge по адресу https://enterprise.apigee.com .
- Выберите имя API-прокси для обновления.
- Выберите вкладку «Разработка» .
- В разделе «Целевые конечные точки» выберите «по умолчанию» .
- В кодовой области отображается определение TargetEndpoint, аналогичное приведенному ниже:
<TargetEndpoint name="default"> <Description/> <FaultRules/> <Flows/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <HTTPTargetConnection> <Properties/> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://mocktarget.apigee.net</URL> </HTTPTargetConnection> </TargetEndpoint> - Настройте хранилище доверенных сертификатов, как описано ниже в разделе «О настройке TLS с бэкэндом» .
- Внесите необходимые изменения и сохраните прокси. Если API-прокси уже развернут, сохранение приведет к его повторному развертыванию с новыми настройками.
Обратите внимание, что определение TargetEndpoint содержит свойство name . Значение свойства name используется для настройки определения ProxyEndpoint API-прокси таким образом, чтобы оно использовало TargetEndpoint. Дополнительную информацию см. в справочнике по настройке API-прокси .
Конфигурации TargetEndpoints можно настроить таким образом, чтобы они ссылались на TargetServer, а не на явный целевой URL. Конфигурация TargetServer отделяет конкретные URL-адреса конечных точек от конфигураций TargetEndpoint. TargetServers используются для поддержки балансировки нагрузки и отказоустойчивости между несколькими экземплярами бэкэнд-серверов.
Ниже приведён пример определения TargetServer:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
В определении TargetEndpoint объект TargetServer указывается по имени в элементе <HTTPTargetConnection> . Вы можете настроить один или несколько именованных объектов TargetServer, как показано ниже.
<TargetEndpoint name="default">
...
<HTTPTargetConnection>
<LoadBalancer>
<Server name="target1" />
<Server name="target2" />
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
...
</TargetEndpoint>Дополнительную информацию см. в разделе «Балансировка нагрузки между серверными бэкэндами» .
О настройке TLS с бэкэндом
Прежде чем настраивать TLS-доступ к бэкэнду, следует учесть два важных момента:
- По умолчанию Edge не проверяет сертификат бэкэнда. Для настройки проверки сертификата в Edge необходимо создать хранилище доверенных сертификатов.
- Используйте ссылку для указания хранилища ключей или доверенных сертификатов, используемого Edge.
Оба аспекта рассмотрены ниже.
Определение хранилища доверенных сертификатов для обеспечения проверки сертификатов.
При выполнении TLS-запроса через TargetEndpoint или TargetServer, Edge по умолчанию не проверяет полученный от бэкэнд-сервера TLS-сертификат. Это означает, что Edge не проверяет его следующим образом:
- Сертификат подписан доверенным центром сертификации.
- Срок действия сертификата не истёк.
- Сертификат содержит общее имя. Если общее имя присутствует, Edge не проверяет, совпадает ли оно с именем хоста, указанным в URL-адресе.
Для настройки Edge на проверку сертификата бэкэнда необходимо:
- Создайте хранилище доверенных сертификатов в Edge.
- Загрузите сертификат сервера или цепочку сертификатов в хранилище доверенных сертификатов. Если сертификат сервера подписан третьей стороной, вам потребуется загрузить в хранилище доверенных сертификатов полную цепочку сертификатов, включая корневой сертификат центра сертификации. Центры сертификации, которым не доверяют неявно, отсутствуют.
- Добавьте хранилище доверенных сертификатов в определение TargetEnpoint или TargetServer.
Более подробную информацию можно найти в разделах Keystores и Truststores .
Например:
<TargetEndpoint name="default">
…
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
<TrustStore>ref://myTrustStoreRef</TrustStore>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
…
</TargetEndpoint>Использование ссылки на хранилище ключей или хранилище доверенных сертификатов.
В приведенном ниже примере показано, как настроить TargetEndpoint или TargetServer для поддержки TLS. В рамках настройки TLS вы указываете хранилище доверенных сертификатов и хранилище ключей в определении TargetEndpoint или TargetServer.
Компания Apigee настоятельно рекомендует использовать ссылки на хранилище ключей и хранилище доверенных сертификатов в определении TargetEndpoints или TargetServer. Преимущество использования ссылки заключается в том, что для обновления TLS-сертификата достаточно просто изменить ссылку, указав на другое хранилище ключей или хранилище доверенных сертификатов.
Ссылки на хранилища ключей и доверенных сертификатов в определениях TargetEndpoints или TargetServer работают так же, как и для виртуальных хостов .
Преобразование объекта TargetEndpoint или TargetServer для использования ссылки.
Возможно, у вас уже есть определения TargetEndpoint или TargetServer, в которых используются буквальные имена хранилища ключей и хранилища доверенных сертификатов. Чтобы преобразовать определение TargetEndpoint или TargetServer для использования ссылок:
- Обновите определение TargetEnpoint или TargetServer, чтобы использовать ссылку.
- Перезапустите обработчики сообщений Edge:
- Для клиентов публичного облака обратитесь в службу поддержки Apigee Edge для перезапуска обработчиков сообщений.
- Для клиентов, использующих частное облако , перезапускайте обработчики сообщений Edge по одному.
- Убедитесь, что ваш TargetEndpoint или TargetServer работает корректно.
Настройка одностороннего TLS-соединения с бэкэнд-сервером.
При использовании определения TargetEndpoint настройка одностороннего доступа TLS от Edge (TLS-клиент) к бэкэнд-серверу (TLS-сервер) не требует дополнительной настройки на Edge. Правильная настройка TLS — задача бэкэнд-сервера.
Вам нужно лишь убедиться, что элемент <URL> в определении TargetEndpoint ссылается на серверную службу по протоколу HTTPS и что вы включили TLS:
<TargetEndpoint name="default">
…
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
…
</TargetEndpoint>Если вы используете TargetServer для определения серверной части, включите TLS в определении TargetServer:
<TargetServer name="target1">
<Host>mocktarget.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer> Однако, если вы хотите, чтобы Edge проверял сертификат бэкэнда, вам необходимо создать хранилище доверенных сертификатов, содержащее сертификат бэкэнда или цепочку сертификатов. Затем вы указываете хранилище доверенных сертификатов в определении TargetEndpoint:
<TargetEndpoint name="default">
…
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
<TrustStore>ref://myTrustStoreRef</TrustStore>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
…
</TargetEndpoint>Или в определении TargetServer:
<TargetServer name="target1">
<Host>mockserver.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
<TrustStore>ref://myTrustStoreRef</TrustStore>
</SSLInfo>
</TargetServer>Для настройки одностороннего TLS:
- Чтобы проверить подлинность сертификата бэкэнда , создайте хранилище доверенных сертификатов в Edge и загрузите сертификат бэкэнда или цепочку центров сертификации, как описано в разделах «Хранилища ключей» и «Хранилища доверенных сертификатов» . В этом примере, если вам необходимо создать хранилище доверенных сертификатов, назовите его myTrustStore .
Если вы создали хранилище доверенных сертификатов, используйте следующий POST-запрос API для создания ссылки с именем myTrustStoreRef на созданное вами выше хранилище доверенных сертификатов:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="myTrustStoreRef"> <Refers>myTrustKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password- Используйте пользовательский интерфейс управления Edge для обновления определения TargetEndpoint для прокси-сервера API (или, если вы определяете прокси-сервер API в формате XML, отредактируйте XML-файлы для прокси):
- Войдите в пользовательский интерфейс управления Edge по адресу https://enterprise.apigee.com .
- В меню пользовательского интерфейса управления Edge выберите API .
- Выберите имя API-прокси для обновления.
- Выберите вкладку «Разработка» .
- В разделе «Целевые конечные точки» выберите «по умолчанию» .
- В области кода отредактируйте элемент
<HTTPTargetConnection>, добавив элемент<SSLInfo>. Убедитесь, что указана правильная ссылка на хранилище доверенных сертификатов, и установите значение<Enabled>в true:<TargetEndpoint name="default"> … <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> … </TargetEndpoint> - Сохраните настройки API-прокси. Если API-прокси уже развернут, сохранение настроек приведет к его повторному развертыванию с новыми параметрами.
Настройка двустороннего TLS-соединения с бэкэнд-сервером.
Если вы хотите обеспечить двустороннюю связь TLS между Edge (TLS-клиент) и бэкэнд-сервером (TLS-сервером):
- Создайте хранилище ключей в Edge и загрузите туда сертификат и закрытый ключ Edge.
- Для проверки подлинности сертификата бэкэнда создайте в Edge хранилище доверенных сертификатов, содержащее сертификат и цепочку центров сертификации, полученные от бэкэнд-сервера.
- Обновите параметр TargetEndpoint во всех API-прокси, которые ссылаются на бэкэнд-сервер, чтобы настроить доступ по протоколу TLS.
Использование псевдонима ключа для указания сертификата хранилища ключей.
В одном хранилище ключей можно определить несколько сертификатов, каждый со своим псевдонимом. По умолчанию Edge использует первый сертификат, определенный в хранилище ключей.
При желании вы можете настроить Edge на использование сертификата, указанного в свойстве <KeyAlias> . Это позволяет определить одно хранилище ключей для нескольких сертификатов, а затем выбрать тот, который вы хотите использовать, в определении TargetServer. Если Edge не может найти сертификат с псевдонимом, соответствующим <KeyAlias> , он использует действие по умолчанию — выбор первого сертификата в хранилище ключей.
Пользователям Edge для публичного облака необходимо связаться со службой поддержки Apigee Edge , чтобы включить эту функцию.
Настройка двустороннего TLS
Для настройки двустороннего TLS:
- Создайте хранилище ключей в Edge и загрузите сертификат и закрытый ключ, используя процедуру, описанную здесь: Хранилища ключей и хранилища доверенных сертификатов . В этом примере создайте хранилище ключей с именем myTestKeystore , используя псевдоним myKey для сертификата и закрытого ключа.
Используйте следующий POST-запрос API для создания ссылки с именем myKeyStoreRef на созданное вами выше хранилище ключей:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="myKeyStoreRef"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:passwordВ ссылке указывается имя хранилища ключей и тип ссылки как
KeyStore.Для просмотра справочной информации воспользуйтесь следующим вызовом API GET:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef / -u email:password- Если вы хотите проверить подлинность сертификата бэкэнда , создайте хранилище доверенных сертификатов (truststore) в Edge и загрузите сертификат и цепочку центров сертификации, как описано здесь: Хранилища ключей и хранилища доверенных сертификатов . В этом примере, если вам нужно создать хранилище доверенных сертификатов, назовите его myTrustStore .
Если вы создали хранилище доверенных сертификатов, используйте следующий POST-запрос API для создания ссылки с именем myTrustStoreRef на созданное вами выше хранилище доверенных сертификатов:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="myTrustStoreRef"> <Refers>myTrustKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password- Используйте пользовательский интерфейс управления Edge для обновления определения TargetEndpoint для прокси-сервера API (или, если вы определяете прокси-сервер API в формате XML, отредактируйте XML-файлы для прокси):
- Войдите в пользовательский интерфейс управления Edge по адресу https://enterprise.apigee.com .
- В меню пользовательского интерфейса управления Edge выберите API .
- Выберите имя API-прокси для обновления.
- Выберите вкладку «Разработка» .
- В разделе «Целевые конечные точки» выберите «по умолчанию» .
- В области кода отредактируйте элемент
<HTTPTargetConnection>, добавив элемент<SSLInfo>. Убедитесь, что указаны правильные хранилище ключей и псевдонимы ключей, а также установите для элементов<Enabled>и<ClientAuthEnabled>значение true:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeyStoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> ... </TargetEndpoint> - Сохраните настройки API-прокси. Если API-прокси уже развернут, сохранение настроек приведет к его повторному развертыванию с новыми параметрами.
Для получения дополнительной информации о доступных параметрах в <TargetEndpoint> , включая использование переменных для передачи значений <SSLInfo> в TargetEndpoint, см. справочник по настройке прокси-сервера API .
Включение SNI
Edge поддерживает использование Server Name Indication (SNI) от обработчиков сообщений для целевых конечных точек в развертываниях Apigee Edge для облака и для частного облака.
Для Edge в частном облаке, чтобы обеспечить обратную совместимость с существующими целевыми бэкэндами, Apigee по умолчанию отключил SNI. Если ваш целевой бэкэнд настроен на поддержку SNI, вы можете включить эту функцию. Подробнее см. раздел «Использование SNI с Edge» .