Варианты настройки TLS

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

В этом документе приводится обзор того, как настроить TLS в Edge для двух функциональных областей:

  1. Доступ к прокси API для клиентов API. Чтобы настроить TLS, используйте виртуальные хосты на маршрутизаторе Edge.
  2. Доступ Edge к вашим серверным сервисам. Чтобы настроить TLS, используйте целевые конечные точки и целевые серверы на Message Processor Edge.

Ниже приведены оба типа доступа.

Настройка параметров TLS в виртуальном хосте или целевой конечной точке/целевом сервере

Виртуальный хост можно представить в виде XML-объекта следующего формата:

<VirtualHost name="secure">
    ...
    <SSLInfo> 
        <Enabled>true</Enabled> 
        <ClientAuthEnabled>true</ClientAuthEnabled> 
        <KeyStore>ref://myKeystoreRef</KeyStore> 
        <KeyAlias>myKeyAlias</KeyAlias> 
        <TrustStore>ref://myTruststoreRef</TrustStore> 
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

Область виртуального хоста, которую вы изменяете для настройки TLS, определяется тегом <SSLInfo>. Для настройки целевой конечной точки или целевого сервера используется тот же тег <SSLInfo>.

В таблице ниже описаны элементы конфигурации TLS, используемые тегом <SSLInfo>.

Элемент Описание
<Enabled>

Включает одностороннее шифрование TLS между Edge и API-клиентом или между Edge и целевым бэкендом.

Для виртуального хоста необходимо определить хранилище ключей, содержащее сертификат и закрытый ключ.

<ClientAuthEnabled>

Включает двусторонний протокол TLS между Edge и API-клиентом или между Edge и целевым бэкендом.

Для двустороннего протокола TLS обычно требуется настроить хранилище доверенных сертификатов в Edge.

<KeyStore> Хранилище ключей.
<KeyAlias> Псевдоним, указанный при загрузке сертификата и закрытого ключа в хранилище ключей.
<TrustStore> Хранилище доверенных сертификатов.
<IgnoreValidationErrors>

Если значение равно true, Edge игнорирует ошибки сертификата TLS. Действителен при настройке TLS для целевых серверов и целевых конечных точек, а также при настройке виртуальных хостов, использующих двусторонний TLS. Значение по умолчанию – false.

Если при использовании целевой конечной точки или целевого сервера серверная система использует SNI и возвращает сертификат с различающимся именем субъекта, которое не совпадает с именем хоста, ошибку нельзя проигнорировать, и подключение завершается неудачно.

<CommonName>

Если указано, значение, по которому проверяется общее название целевого сертификата. Это значение действительно только для конфигураций TargetEndpoint и TargetServer. Она недействительна для конфигураций VirtualHost.

По умолчанию указанное значение точно сопоставляется с общим названием целевого сертификата. Например, если в качестве значения для <CommonName> используется *.myhost.com, то целевое имя хоста будет сопоставлено и проверено только в том случае, если в целевом сертификате в качестве общего имени указано точное значение *.myhost.com.

При необходимости Apigee может выполнять сопоставление с подстановочными знаками, используя атрибут wildcardMatch.

Например, стандартное имя, указанное как abc.myhost.com в целевом сертификате, будет сопоставлено и проверено, если элемент <CommonName> указан следующим образом:

<CommonName wildcardMatch="true">*.myhost.com</CommonName>

Как задать элементы <KeyStore> и <TrustStore>

В приведенном выше примере виртуального хоста хранилище ключей и хранилище доверенных сертификатов задаются с помощью ссылок в следующем формате:

<KeyStore>ref://myKeystoreRef</KeyStore>
<TrustStore>ref://myTruststoreRef</TrustStore>

Apigee настоятельно рекомендует всегда использовать ссылки на хранилище ключей и доверенное хранилище. Ссылка – это переменная, которая содержит название хранилища ключей или доверенного хранилища, а не указывает название хранилища ключей напрямую. В этом примере:

  • myKeystoreRef – это ссылка, содержащая название хранилища ключей. В этом примере хранилище ключей называется myKeystore.
  • myTruststoreRef – это ссылка, содержащая название хранилища доверенных сертификатов. В этом примере хранилище доверенных сертификатов называется myTruststore.

Когда срок действия сертификата истекает, вам нужно обновить виртуальный хост или целевую конечную точку/целевой сервер, чтобы указать хранилище ключей или доверенное хранилище, содержащее новый сертификат. Преимущество ссылки в том, что вы можете изменить ее значение, чтобы изменить хранилище ключей или доверенное хранилище, не изменяя сам виртуальный хост или целевую конечную точку/целевой сервер:

  • Для клиентов Cloud. Чтобы изменить значение ссылки, не нужно обращаться в службу поддержки Apigee Edge.
  • Для клиентов Private Cloud. Изменение значения ссылки не требует перезапуска компонентов Edge, таких как маршрутизаторы и процессоры сообщений.

Вы также можете указать название хранилища ключей и хранилища доверенных сертификатов напрямую:

<KeyStore>myKeystore</KeyStore>
<TrustStore>myTruststore</TrustStore> 

Если вы напрямую указываете название хранилища ключей или доверенного хранилища, клиентам облачной версии необходимо обратиться в службу поддержки Apigee Edge, а клиентам частного облака – перезапустить некоторые компоненты Edge, чтобы обновить сертификат.

Третий вариант, предназначенный только для целевых конечных точек и целевого сервера, – использовать переменные потока:

<KeyStore>{ssl.keystore}</KeyStore>
<TrustStore>{ssl.truststore}</TrustStore> 

Переменные потока работают для целевых конечных точек и целевых серверов и позволяют обновлять хранилище ключей или хранилище доверенных сертификатов, например ссылки. Однако они не работают с виртуальными хостами и требуют передавать информацию о хранилище ключей, псевдониме и хранилище доверенных сертификатов в каждом запросе.

Ограничения на использование ссылок на хранилища ключей и доверенные хранилища

Платные клиенты Cloud и все клиенты Private Cloud, настраивающие TLS, должны учитывать следующее ограничение при использовании ссылок на хранилища ключей и доверенные хранилища:

  • Вы можете использовать ссылки на хранилище ключей и доверенное хранилище в виртуальных хостах, только если завершаете TLS на маршрутизаторах Apigee.
  • Если перед маршрутизаторами Apigee установлен балансировщик нагрузки, на котором завершается TLS-подключение, то в виртуальных хостах нельзя использовать ссылки на хранилища ключей и доверия.

Если в существующем виртуальном хосте используется буквальное имя хранилища ключей или доверенного хранилища

Существующие виртуальные хосты в Edge могут быть не настроены на использование ссылок для хранилищ ключей и доверенных хранилищ. В этом случае вы можете обновить виртуальный хост, чтобы использовать ссылку.

  1. Edge для облака

    Чтобы изменить виртуальный хост и использовать ссылку на хранилище ключей, с которым вы хотите работать, обратитесь в службу поддержки Apigee Edge.

  2. Edge для частного облака

    Чтобы преобразовать виртуальный хост для использования ссылки:

    1. Обновите виртуальный хост, чтобы использовать ссылку.
    2. Перезапустите маршрутизаторы.
    Подробнее о том, как изменить виртуальный хост, чтобы использовать ссылки на хранилище ключей и хранилище доверенных сертификатов, рассказывается в статье Как настроить доступ к API по протоколу TLS для частного облака.

Как использовать бесплатный пробный сертификат и ключ Apigee

Если у вас платный аккаунт Edge for Cloud и у вас ещё нет сертификата и ключа TLS, вы можете создать виртуальный хост, который использует бесплатный пробный сертификат и ключ Apigee. Это означает, что вы можете создать виртуальный хост, не создавая хранилище ключей.

В XML-объекте, который определяет виртуальный хост с использованием бесплатного пробного сертификата и ключа Apigee, опущены элементы <KeyStore> и <KeyAlias>, а вместо них используется элемент <UseBuiltInFreeTrialCert>, как показано ниже:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>myapi.apigee.net</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
    </SSLInfo>
    <UseBuiltInFreeTrialCert>true</UseBuiltInFreeTrialCert>
</VirtualHost>

Если вы выполняете двустороннюю аутентификацию TLS, вам все равно нужно задать для элемента <ClientAuthEnabled> значение true и указать хранилище доверенных сертификатов, используя ссылку с элементом <TrustStore>.

Подробнее о настройке виртуальных хостов для облака…

Настройка TLS

На то, как вы настраиваете TLS, влияют два основных фактора:

  • Вы клиент Edge Cloud или Private Cloud?
  • Как вы будете обновлять просроченные или скоро истекающие сертификаты?

Варианты конфигурации облака и частного облака

В таблице ниже приведены различные варианты конфигурации для клиентов Cloud и Private Cloud:

Private Cloud облачные решения
Виртуальный хост Полный контроль Полный контроль только для платных аккаунтов
Целевая конечная точка или целевой сервер Полный контроль Полный контроль

Клиенты Private Cloud имеют полный контроль над конфигурацией как виртуальных хостов, так и целевых конечных точек/целевых серверов. Это позволяет создавать и удалять виртуальных хостов, а также задавать все свойства виртуального хоста.

Все клиенты Cloud, как платные, так и пробные, имеют полный контроль над конфигурацией целевых конечных точек/целевых серверов. Кроме того, платные клиенты Cloud могут полностью управлять виртуальными хостами, в том числе свойствами TLS.

Как обрабатывать просроченные сертификаты

Если срок действия сертификата TLS истек или конфигурация системы изменилась таким образом, что сертификат стал недействительным, его необходимо обновить. При настройке TLS для виртуального хоста или целевой конечной точки/целевого сервера необходимо решить, как вы будете выполнять обновление, прежде чем выполнять какие-либо настройки.

Когда срок действия сертификата истекает

В Edge сертификаты хранятся в одном из двух мест:

  • Хранилище ключей – содержит сертификат TLS и закрытый ключ, используемые для идентификации объекта во время рукопожатия TLS.
  • Хранилище доверенных сертификатов – содержит доверенные сертификаты на клиенте TLS, используемые для проверки сертификата сервера TLS, предоставленного клиенту. Обычно это самозаверяющие сертификаты, сертификаты, подписанные доверенным ЦС, или сертификаты, используемые в рамках двустороннего протокола TLS.

Если срок действия сертификата в хранилище ключей истек и вы используете ссылку на хранилище ключей, вы не сможете загрузить в него новый сертификат. Вместо этого вы:

  1. Создайте новое хранилище ключей.
  2. Загрузите новый сертификат в новое хранилище ключей, используя тот же псевдоним, что и в старом хранилище.
  3. Обновите ссылку в виртуальном хосте или целевом сервере/целевой конечной точке, чтобы использовать новое хранилище ключей.

Когда срок действия сертификата в хранилище доверенных сертификатов истекает и вы используете ссылку на хранилище доверенных сертификатов, вы:

  1. Создайте новое хранилище доверенных сертификатов.
  2. Загрузите новый сертификат в новое хранилище доверенных сертификатов. Для хранилищ доверенных сертификатов название псевдонима не имеет значения. Примечание. Если сертификат входит в цепочку, вы можете создать один файл, содержащий все сертификаты, и загрузить его в хранилище доверенных сертификатов под одним псевдонимом или загрузить все сертификаты из цепочки по отдельности, используя для каждого из них свой псевдоним.
  3. Обновите ссылку в виртуальном хосте или целевом сервере/целевой конечной точке, чтобы использовать новое хранилище доверенных сертификатов.

Обзор способов обновления сертификата с истекшим сроком действия

Способ, которым вы указываете имя хранилища ключей и хранилища доверенных сертификатов в виртуальном хосте или целевой конечной точке/целевом сервере, определяет, как вы будете обновлять сертификат. Вы можете использовать:

  • Ссылки
  • Прямые названия
  • Переменные процесса

Каждый из этих методов по-разному влияет на процесс обновления, как описано в таблице ниже. Как видите, ссылки обеспечивают наибольшую гибкость как для клиентов Cloud, так и для клиентов Private Cloud:

Тип конфигурации Как обновить или заменить сертификат Private Cloud облачные решения
Справочные (рекомендуется) Для хранилища ключей создайте новое хранилище с новым названием и псевдоним с тем же названием, что и у старого псевдонима.

Для хранилища доверенных сертификатов создайте хранилище с новым названием.

Обновите ссылку на хранилище ключей или доверенное хранилище.

Перезапускать маршрутизатор или Message Processor не нужно.

Обновите ссылку на хранилище ключей или доверенное хранилище.

Обращаться в службу поддержки Apigee не нужно.

Переменные процесса (только для целевой конечной точки) Для хранилища ключей создайте новое хранилище с новым названием и псевдоним с тем же или новым названием.

Для хранилища доверенных сертификатов создайте хранилище с новым названием.

Передавайте обновленную переменную потока в каждом запросе с названием нового хранилища ключей, псевдонима или хранилища доверенных сертификатов.

Перезапускать маршрутизатор или Message Processor не нужно.

Передавайте обновленную переменную потока в каждом запросе с названием нового хранилища ключей, псевдонима или хранилища доверенных сертификатов.

Обращаться в службу поддержки Apigee не нужно.

Прямой Создайте новое хранилище ключей, псевдоним и хранилище доверенных сертификатов. Обновите виртуальный хост и перезапустите маршрутизаторы.

Если хранилище доверенных сертификатов используется целевой конечной точкой или целевым сервером, повторно разверните прокси.

Чтобы перезапустить маршрутизаторы для виртуальных хостов, обратитесь в службу поддержки Apigee Edge.

Если хранилище доверенных сертификатов используется целевой конечной точкой или целевым сервером, повторно разверните прокси.

Прямой Удалите хранилище ключей или доверенное хранилище и создайте его заново с тем же именем. Обновлять виртуальный хост не нужно, перезапускать маршрутизатор не требуется. Однако запросы к API будут отклоняться, пока не будут заданы новое хранилище ключей и псевдоним.

Если хранилище ключей используется для двустороннего TLS между Edge и бэкенд-службой, перезапустите Message Processor.

Обновлять виртуальный хост не нужно. Однако запросы к API будут отклоняться, пока не будут заданы новое хранилище ключей и псевдоним.

Если хранилище ключей используется для двустороннего TLS между Edge и бэкенд-службой, обратитесь в службу поддержки Apigee Edge, чтобы перезапустить процессоры сообщений.

Прямой Если вы используете только хранилище доверенных сертификатов, загрузите в него новый сертификат. Если хранилище доверенных сертификатов используется виртуальным хостом, перезапустите маршрутизаторы.

Если хранилище доверенных сертификатов используется целевой конечной точкой или целевым сервером, перезапустите процессоры сообщений.

Если вы используете виртуальные хосты, обратитесь в службу поддержки Apigee Edge, чтобы перезапустить маршрутизаторы Edge.

Если хранилище доверенных сертификатов используется целевой конечной точкой или целевым сервером, обратитесь в службу поддержки Apigee Edge, чтобы перезапустить процессоры сообщений.