Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Прокси-сервер API сопоставляет общедоступную конечную точку с вашей бэкенд-службой. Виртуальный хост определяет, как общедоступный прокси-сервер API предоставляется приложению. Например, виртуальный хост определяет, можно ли получить доступ к прокси-серверу API с помощью TLS. При настройке прокси-сервера API измените определение ProxyEndpoint, чтобы задать используемые им виртуальные хосты.
TargetEndpoint – это исходящий эквивалент ProxyEndpoint. TargetEndpoint работает как HTTP-клиент, который подключается к бэкенд-службе из Edge. При создании прокси-сервера API можно настроить его на использование нуля или более конечных точек TargetEndpoint.
Подробнее…
- О TLS/SSL
- Использование TLS с Edge
- О виртуальных хостах
- Хранилища ключей и доверенные хранилища
- Справочник по конфигурации прокси-сервера API
Как настроить TargetEndpoint или TargetServer
Чтобы настроить TargetEndpoint, измените XML-объект, определяющий TargetEndpoint. Вы можете изменить TargetEndpoint, отредактировав XML-файл, который определяет TargetEndpoint в вашем прокси-сервере API, или в интерфейсе управления Edge.
Чтобы изменить TargetEndpoint с помощью интерфейса управления Edge:
- Войдите в интерфейс управления Edge на странице https://enterprise.apigee.com.
- Выберите название прокси-сервера API, который нужно обновить.
- Выберите вкладку Разработка.
- В разделе Целевые конечные точки выберите default.
- В области кода появится определение 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.
Конечные точки TargetEndpoint можно настроить так, чтобы они ссылались на TargetServer, а не на явный целевой URL. Конфигурация TargetServer отделяет URL конечных точек от конфигураций TargetEndpoint. Целевые серверы используются для поддержки балансировки нагрузки и отработки отказа в нескольких экземплярах бэкенд-серверов.
Ниже приведен пример определения TargetServer:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
На TargetServer можно ссылаться по имени в элементе <HTTPTargetConnection>
в определении TargetEndpoint.
Вы можете настроить один или несколько именованных целевых серверов, как показано ниже.
<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
- Загрузите сертификат сервера или цепочку сертификатов в хранилище доверенных сертификатов. Если сертификат сервера подписан третьей стороной, вам нужно будет загрузить в хранилище доверенных сертификатов полную цепочку сертификатов, включая корневой сертификат ЦС. Нет неявно доверенных ЦС.
- Добавьте хранилище доверенных сертификатов в определение TargetEndpoint или TargetServer.
Подробнее о хранилищах ключей и доверенных хранилищах…
Пример:
<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 достаточно изменить ссылку на другое хранилище ключей или доверенное хранилище.
Ссылки на хранилища ключей и доверенные хранилища в определениях TargetEndpoint или TargetServer работают так же, как и для виртуальных хостов.
Как преобразовать TargetEndpoint или TargetServer для использования ссылки
У вас могут быть существующие определения TargetEndpoint или TargetServer, в которых используется буквальное название хранилища ключей и хранилища доверенных сертификатов. Чтобы преобразовать определение TargetEndpoint или TargetServer для использования ссылок:
- Обновите определение TargetEndpoint или TargetServer, чтобы использовать ссылку.
- Перезапустите процессоры сообщений Edge:
- Клиентам общедоступного облака необходимо обратиться в службу поддержки Apigee Edge, чтобы перезапустить процессоры сообщений.
- Клиентам частного облака следует перезапускать процессоры сообщений Edge по одному.
- Убедитесь, что TargetEndpoint или TargetServer работает правильно.
Настройка одностороннего TLS для подключения к серверу backend
При использовании определения TargetEndpoint для настройки одностороннего доступа TLS из Edge (клиент TLS) к серверу backend (сервер 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.
-
Если вы создали хранилище доверенных сертификатов, используйте следующий вызов API POST, чтобы создать ссылку 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 - Чтобы обновить определение TargetEndpoint для прокси API, используйте интерфейс управления Edge (или, если вы определяете прокси API в XML, отредактируйте XML-файлы для прокси):
- Войдите в интерфейс управления Edge на странице https://enterprise.apigee.com.
- В меню интерфейса управления Edge выберите API.
- Выберите название прокси-сервера API, который нужно обновить.
- Выберите вкладку Разработка.
- В разделе Целевые конечные точки выберите default.
- В области кода измените элемент
<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 для подключения к серверу backend
Если вы хотите поддерживать двусторонний протокол TLS между Edge (клиент TLS) и внутренним сервером (сервер TLS):
- Создайте хранилище ключей в Edge и загрузите сертификат Edge и закрытый ключ.
- Если вы хотите проверить сертификат внутреннего сервера, создайте в Edge хранилище доверенных сертификатов, содержащее сертификат и цепочку сертификатов ЦС, полученные от внутреннего сервера.
- Обновите TargetEndpoint любых прокси API, которые ссылаются на внутренний сервер, чтобы настроить доступ по протоколу TLS.
Использование псевдонима ключа для указания сертификата хранилища ключей
В одном хранилище ключей можно определить несколько сертификатов, каждый из которых будет иметь собственный псевдоним. По умолчанию Edge использует первый сертификат, определенный в хранилище ключей.
При необходимости вы можете настроить Edge так, чтобы он использовал сертификат, указанный в свойстве <KeyAlias>.
Это позволяет определить одно хранилище ключей для нескольких сертификатов, а затем выбрать нужный в определении TargetServer. Если Edge не может найти сертификат с псевдонимом, соответствующим <KeyAlias>, то по умолчанию выбирается первый сертификат в хранилище ключей.
Пользователям Edge для общедоступного облака необходимо обратиться в службу поддержки Apigee Edge, чтобы включить эту функцию.
Как настроить двустороннее шифрование TLS
Чтобы настроить двусторонний протокол TLS:
- Создайте хранилище ключей в Edge и загрузите сертификат и закрытый ключ, следуя инструкциям в разделе Хранилища ключей и хранилища доверенных сертификатов. В этом примере мы создадим хранилище ключей myTestKeystore, в котором для сертификата и закрытого ключа будет использоваться псевдоним myKey.
-
Чтобы создать ссылку myKeyStoreRef на хранилище ключей, созданное выше, используйте следующий вызов API POST:
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 - Если вы хотите проверить сертификат сервера, создайте хранилище доверенных сертификатов в Edge и загрузите сертификат и цепочку сертификатов ЦС, как описано в разделе Хранилища ключей и доверенных сертификатов. В этом примере хранилище доверенных сертификатов будет называться myTrustStore.
-
Если вы создали хранилище доверенных сертификатов, используйте следующий вызов API POST, чтобы создать ссылку 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 - Чтобы обновить определение TargetEndpoint для прокси API, используйте интерфейс управления Edge (или, если вы определяете прокси API в XML, отредактируйте XML-файлы для прокси):
- Войдите в интерфейс управления Edge на странице https://enterprise.apigee.com.
- В меню интерфейса управления Edge выберите API.
- Выберите название прокси-сервера API, который нужно обновить.
- Выберите вкладку Разработка.
- В разделе Целевые конечные точки выберите default.
- В области кода измените элемент
<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>, в том числе об использовании переменных для указания значений TargetEndpoint <SSLInfo>, рассказывается в справочнике по конфигурации прокси-сервера API.
Как включить SNI
Edge поддерживает использование функции SNI (указание имени сервера) от процессоров сообщений для конечных точек в Apigee Edge для облачных и частных облачных развертываний.
Чтобы обеспечить обратную совместимость с существующими целевыми серверными частями, в Edge для частного облака по умолчанию отключена функция SNI. Если целевой сервер поддерживает SNI, вы можете включить эту функцию. Подробнее об использовании SNI с Edge…