Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Edge позволяет создавать виртуальные хосты, поддерживающие односторонний и двусторонний TLS. При одностороннем TLS клиент отправляет запрос на сессию виртуальному хосту, развернутому на маршрутизаторе Edge, а маршрутизатор отвечает сертификатом, содержащим открытый ключ виртуального хоста. Для получения подписанного сертификата клиент может затем отправить запрос в центр сертификации (CA) для аутентификации сертификата.
В двустороннем TLS-соединении и клиент, и пограничный сервер передают сертификаты, которые проверяются в рамках запроса:
- Пограничный маршрутизатор предоставляет свой сертификат TLS-клиенту для аутентификации. Затем клиент проверяет подлинность сервера, прежде чем отправить свой сертификат серверу.
- TLS-клиент предоставляет свой сертификат Edge для аутентификации.
Дополнительную информацию см. в разделе «О виртуальных хостах» .
Получение информации о TLS-соединении
При отправке запроса к API-прокси через виртуальный хост, поддерживающий TLS, Edge может получить информацию о TLS-соединении. Затем ваш API-прокси может получить доступ к этой информации через переменные потока для выполнения дополнительного анализа и проверки.
Тип информации TLS, захватываемой Edge, зависит от того, поддерживает ли виртуальный хост односторонний или двусторонний TLS. Например, при одностороннем TLS Edge может захватывать информацию о шифре TLS или протоколе TLS, используемом в TLS-соединении.
При двустороннем TLS-соединении Edge может захватывать всю ту же информацию, что и при одностороннем TLS-соединении, а также информацию о сертификате клиента. Например, Edge может захватить отпечаток SHA1 сертификата клиента и сам сертификат клиента в формате PEM.
Сбор информации как для одностороннего, так и для двустороннего TLS-соединения.
В следующей таблице перечислены переменные потока, содержащие информацию о TLS-соединении, полученную Edge и доступную для доступа через API-прокси. Эта информация собирается как для одностороннего, так и для двустороннего TLS путем установки параметра <ConnectionProperties> в значение true в определении виртуального хоста:
| Потоковая переменная | Описание |
|---|---|
tls.cipher | Шифр, используемый в TLS-соединении. |
tls.protocol | Протокол, используемый для TLS-соединения. |
tls.server.name | Запрошенное имя SNI-сервера. |
tls.session.id | Идентификатор сессии. Эта переменная потока доступна, если вы установите значение |
Получение дополнительной информации TLS во время двустороннего TLS-соединения.
В следующей таблице перечислены переменные потока, содержащие сведения о клиентском сертификате, полученные Edge в двустороннем TLS-соединении. Эта информация для двустороннего TLS-соединения собирается путем установки <ClientProperties> в значение true в определении виртуального хоста:
| Потоковая переменная | Описание |
|---|---|
tls.client.s.dn | Отличительное имя (DN) клиентского сертификата. |
tls.client.i.dn | Указывающее имя (DN) эмитента клиентского сертификата. |
tls.client.raw.cert | Сертификат клиента в формате PEM. |
tls.client.cert.serial | Серийный номер клиентского сертификата. |
tls.client.cert.fingerprint | SHA1-отпечаток клиентского сертификата. |
tls.session.id | Идентификатор сессии. Эта переменная потока доступна, если вы установите значение |
Настройка виртуального хоста для захвата информации TLS
Чтобы настроить виртуальный хост на захват информации TLS, установите для следующих свойств в разделе <PropagateTLSInformation> значение true .
-
<ConnectionProperties>: Включить захват информации о TLS-соединении как для одностороннего, так и для двустороннего TLS. Значение по умолчанию —false. -
<ClientProperties>: Включить сбор дополнительной информации для двустороннего TLS. Значение по умолчанию —false.
Например, следующее определение виртуального хоста использует двусторонний TLS и позволяет захватывать оба типа информации TLS:
<VirtualHost name="secure">
....
<SSLInfo>
<Enabled>true</Enabled>
# Enable two-way TLS.
<ClientAuthEnabled>true</ClientAuthEnabled>
<IgnoreValidationErrors>false</IgnoreValidationErrors>
<KeyAlias>ks-alias</KeyAlias>
<KeyStore>ref://ks-ref</KeyStore>
<TrustStore>ref://ts-ref</TrustStore>
</SSLInfo>
<PropagateTLSInformation>
<ConnectionProperties>true</ConnectionProperties>
<ClientProperties>true</ClientProperties>
</PropagateTLSInformation>
</VirtualHost>Если вы передаете JSON-тело, установите следующие свойства:
"propagateTLSInformation" : {
"connectionProperties" : true,
"clientProperties" : true
}Установите ограничения на размер заголовка.
При включении захвата информации TLS на виртуальном хосте Edge передает эту информацию с помощью HTTP-заголовков. Поэтому необходимо убедиться, что ограничения на размер заголовков установлены соответствующим образом в зависимости от того, используете ли вы Edge для облака или Edge для частного облака:
- Edge for the Cloud : Apigee устанавливает соответствующие размеры заголовков.
- Edge для частного облака : функция недоступна.
Доступ к переменным потока в API-прокси
Из вашего API-прокси вы можете получить доступ к переменным потока TLS и просмотреть их. Например, вы можете использовать политику AssignMessage для доступа к ним, или же получить к ним доступ в JavaScript с помощью политики JavaScript.
Вы также можете ссылаться на переменные потока в элементе <Condition> прокси- или целевого потока, или в элементе <Step> или <RouteRule> . Например, вы можете направлять запрос к различным целям в зависимости от серийного номера клиента.
Для получения более подробной информации см.: