Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Edge позволяет создавать виртуальные хосты, поддерживающие односторонний и двусторонний протоколы TLS. При одностороннем протоколе TLS клиент отправляет запрос сеанса на виртуальный хост, развернутый на маршрутизаторе Edge, а маршрутизатор отвечает сертификатом, содержащим открытый ключ виртуального хоста. Если сертификат подписан, клиент может отправить запрос в центр сертификации (ЦС), чтобы проверить подлинность сертификата.
При двустороннем TLS клиент и Edge передают сертификаты, которые проверяются в рамках запроса:
- Маршрутизатор Edge предоставляет свой сертификат клиенту TLS для аутентификации. Затем клиент проверяет подлинность сервера, прежде чем отправить ему свой сертификат.
- Клиент TLS предоставляет Edge свой сертификат для аутентификации.
Подробнее о виртуальных хостах…
Как получить информацию о подключении TLS
Во время запроса к прокси-серверу API через виртуальный хост, поддерживающий TLS, Edge может собирать информацию о подключении TLS. Затем прокси-сервер API может получить доступ к этой информации через переменные потока, чтобы выполнить дополнительный анализ и проверку.
Тип информации TLS, которую собирает Edge, зависит от того, поддерживает ли виртуальный хост одностороннюю или двустороннюю аутентификацию TLS. Например, при одностороннем TLS Edge может собирать информацию о шифре TLS или протоколе TLS, используемом в TLS-подключении.
При двустороннем протоколе TLS Edge может собирать ту же информацию, что и при одностороннем, а также данные о сертификате клиента. Например, Edge может получить отпечаток SHA1 клиентского сертификата и сам клиентский сертификат в формате PEM.
Сбор информации для одностороннего и двустороннего TLS
В таблице ниже перечислены переменные потока, содержащие информацию о подключении TLS, полученную Edge и доступную в прокси-сервере API. Эта информация собирается для одностороннего и двустороннего протокола TLS путем установки значения true для параметра <ConnectionProperties> в определении виртуального хоста:
| Переменная потока | Описание |
|---|---|
tls.cipher
|
Шифр, используемый подключением TLS. |
tls.protocol
|
Протокол, используемый для подключения по протоколу TLS. |
tls.server.name
|
Запрошенное имя сервера SNI. |
tls.session.id
|
Идентификатор сеанса. Эта переменная процесса доступна, если для параметра |
Как собирать дополнительную информацию TLS при двустороннем TLS
В таблице ниже перечислены переменные потока, содержащие сведения о сертификате клиента, полученные Edge при двустороннем TLS. Эта информация собирается для двустороннего протокола TLS путем установки значения true для параметра <ClientProperties> в определении виртуального хоста:
| Переменная потока | Описание |
|---|---|
tls.client.s.dn
|
Уникальное имя субъекта клиентского сертификата. |
tls.client.i.dn
|
Уникальное имя эмитента сертификата клиента. |
tls.client.raw.cert
|
Сертификат клиента в формате PEM. |
tls.client.cert.serial
|
Серийный номер сертификата клиента. |
tls.client.cert.fingerprint
|
Отпечаток SHA1 сертификата клиента. |
tls.session.id
|
Идентификатор сеанса. Эта переменная процесса доступна, если для параметра |
Как настроить виртуальный хост для сбора информации о TLS
Чтобы настроить виртуальный хост для сбора информации о TLS, задайте для следующих свойств значение true в разделе <PropagateTLSInformation>.
<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>. Например, вы можете направлять запрос к разным целевым объектам в зависимости от серийного номера клиента.
Дополнительная информация приведена в следующих статьях: