Доступ к информации о соединении TLS в прокси-сервере API

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Edge позволяет создавать виртуальные хосты, поддерживающие односторонний и двусторонний TLS. При одностороннем TLS клиент отправляет запрос сеанса виртуальному хосту, развернутому на пограничном маршрутизаторе, и маршрутизатор отвечает сертификатом, содержащим открытый ключ виртуального хоста. Для подписанного сертификата клиент может затем отправить запрос в центр сертификации (CA) для проверки подлинности сертификата.

В двустороннем TLS и клиент, и Edge передают сертификаты, которые проверяются как часть запроса:

  • Edge Router предоставляет свой сертификат 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

Идентификатор сеанса.

Эта переменная потока доступна, если вы установили для <ConnectionProperties> или <ClientProperties> значение true.

Сбор дополнительной информации 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

Идентификатор сеанса.

Эта переменная потока доступна, если для <ConnectionProperties> или <ClientProperties> установлено значение true.

Настройка виртуального хоста для сбора информации 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 для облака : Apigee соответствующим образом устанавливает размеры заголовков.
  • Edge для частного облака : функция недоступна.

Доступ к переменным потока в прокси-сервере API

Из вашего прокси-сервера API вы можете получить доступ и проверить переменные потока TLS. Например, вы можете использовать политику AssignMessage для доступа к ним, получить к ним доступ в JavaScript с помощью политики JavaScript.

Вы также можете ссылаться на переменные потока в элементе <Condition> прокси- или целевого потока либо в <Step> или <RouteRule> . Например, вы можете направить запрос к различным целям в зависимости от серийного номера клиента.

Подробнее см.: