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

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

Клиент Cloud с платным аккаунтом может создать виртуальный хост в организации.

Кто может создавать и изменять виртуальных хостов в облаке

Создавать и изменять виртуальных хостов можно только в платных аккаунтах Edge Cloud. Пользователь, создающий виртуальный хост, должен иметь роль администратора организации или специальную роль с разрешениями на изменение виртуального хоста. У пользователей с другими ролями нет разрешения на создание виртуальных хостов.

Например, платные клиенты могут:

  • Как включить односторонний и двусторонний протокол TLS
  • Укажите хранилище ключей или доверенных сертификатов, используемое виртуальным хостом

В бесплатных и пробных аккаунтах нельзя создавать или изменять виртуальные хосты. Можно использовать только те виртуальные хосты, которые были созданы при регистрации Edge. Подробнее о тарифных планах Edge можно узнать на странице https://apigee.com/api-management/#/pricing.

Требования к настройке виртуального хоста для облака

В таблице ниже приведены требования к созданию виртуального хоста.

Категория Требования Описание
Тип аккаунта Платно В бесплатных и пробных аккаунтах нельзя создавать и изменять виртуальные хосты.
Роль пользователя администратор организации; Создать виртуальный хост может только администратор организации или пользователь с ролью, у которой есть разрешение на изменение виртуального хоста.
Количество виртуальных хостов не более 20;

В облаке для каждой организации или среды можно создать не более 20 виртуальных хостов.

Примечание. В частном облаке можно создать любое количество виртуальных хостов.

В большинстве организаций/сред используется два виртуальных хоста: один для доступа по протоколу HTTP, а другой – по протоколу HTTPS. Если в вашей организации или среде разрешен доступ с использованием разных доменных имен, вам могут понадобиться дополнительные виртуальные хосты.

Базовый URL включая протокол; При определении базового URL для виртуального хоста в интерфейсе или с помощью API необходимо указать протокол (например, "http://" или "https://") как часть URL.
Порт 443

Виртуальный хост можно создать только на порту 443.

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

TLS Обязательно

Вы можете создать только виртуальный хост, поддерживающий TLS через HTTPS. У вас уже должно быть хранилище ключей, а при необходимости – хранилище доверенных сертификатов, содержащее сертификат TLS и ключ.

У вас должен быть сертификат, подписанный надежной организацией, например Symantec или VeriSign. Самозаверяющий сертификат использовать нельзя.

Если вам нужен доступ по протоколу HTTP, обратитесь в службу поддержки Apigee Edge.

Протокол TLS TLS 1.2

Edge в облаке поддерживает только TLS 1.2.

Псевдоним хоста Уникальный в организации и среде Псевдоним хоста не существует для другой комбинации организации и среды.
Доменное имя Принадлежит клиенту

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

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

  • CN – общее имя
  • SAN – альтернативное имя субъекта

В SAN или CN можно использовать подстановочные знаки, например *.myco.net.

Edge также проверяет, не истек ли срок действия сертификата.

Поддержка SNI в клиентском приложении Все клиентские приложения, обращающиеся к виртуальному хосту, должны поддерживать SNI.

Поддержка SNI требуется для всех приложений.

Как создать виртуальный хост с помощью браузера

В большинстве примеров в этом разделе для создания или изменения виртуальных хостов используется API Edge, но вы можете создать виртуальный хост в интерфейсе Edge.

Чтобы создать виртуальный хост с помощью интерфейса Edge:

  1. Войдите в аккаунт на сайте apigee.com/edge.
  2. Выберите Администрирование > Виртуальные хосты.
  3. Выберите среду, например prod или test.
  4. Нажмите + Виртуальный хост, чтобы создать виртуальный хост, или выберите название существующего виртуального хоста, чтобы изменить его.
  5. Подробную информацию о том, как заполнять поля виртуального хоста, можно найти в таблице выше.

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

Объект XML, определяющий виртуальный хост. Например, следующий объект XML определяет виртуальный хост для одностороннего протокола TLS:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

В этом определении:

  • Укажите название как myTLSVHost. Используйте это название, чтобы ссылаться на виртуальный хост в прокси-сервере API или вызове API.
  • Укажите псевдоним хоста как api.myCompany.com. Это общедоступный домен, используемый для доступа к вашим API, как определено в записи DNS и CNAME.
  • Укажите номер порта: 443. Если этот параметр не указан, по умолчанию используется порт 443.
  • При необходимости включите TLS.

    Элемент <Enable> имеет значение true, чтобы включить односторонний протокол TLS, а элементы <KeyStore> указывают на хранилище ключей и псевдоним ключа, используемые подключением TLS.

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

    Примечание. Поскольку изначально Edge поддерживал SSL, тег, который вы используете для настройки TLS, называется <SSLInfo>.

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

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

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

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>

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

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

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

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

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

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

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

Чтобы создать виртуальный хост для двустороннего протокола TLS, создайте XML-объект, определяющий виртуальный хост:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
</VirtualHost>

В этом определении:

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

Определение виртуального хоста, использующего бесплатный пробный сертификат и ключ Apigee

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

Бесплатный пробный сертификат Apigee определен для домена *.apigee.net. Поэтому значение <HostAlias> виртуального хоста также должно иметь формат *.apigee.net.

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

В 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>

Значение по умолчанию для элемента <UseBuiltInFreeTrialCert> – false.

Для двустороннего TLS определите виртуальный хост следующим образом:

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

В интерфейсе Edge выберите вариант Use built-in free trial certificate (Использовать встроенный бесплатный пробный сертификат) при создании виртуального хоста, чтобы использовать бесплатный сертификат и ключ Apigee:

Выберите &quot;Использовать встроенный бесплатный пробный сертификат&quot;.

Как создать виртуальный хост

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

  1. Создайте запись DNS и запись CNAME для общедоступного домена, в нашем примере – api.myCompany.com, которая указывает на [org]-[environment].apigee.net.
  2. Создайте и настройте хранилище ключей, в этом примере myTestKeystore, следуя инструкциям в разделе Создание хранилищ ключей и доверенных хранилищ с помощью интерфейса Edge. В этом примере убедитесь, что в хранилище ключей для сертификата и закрытого ключа используется псевдоним myKeyAlias.
  3. Загрузите сертификат и ключ в хранилище ключей. Убедитесь, что доменное имя, указанное в сертификате, соответствует псевдониму хоста, который вы хотите использовать для виртуального хоста.
  4. Создайте ссылку на хранилище ключей с помощью интерфейса Edge или API. В ссылке указывается название хранилища ключей и тип ссылки KeyStore. Подробнее о том, как работать с объектами…

  5. Создайте виртуальный хост с помощью API Create a Virtual Host (Создать виртуальный хост). Убедитесь, что вы указали правильную ссылку на хранилище ключей и псевдоним ключа. Чтобы использовать API, создайте хранилище ключей с именем myTLSVHost, отправив следующий вызов API POST:
    curl -X POST -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts \
      -d '<VirtualHost name="myTLSVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Port>443</Port>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://myTestKeystoreRef</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u orgAdminEmail:password

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

  6. Если у вас есть прокси API, добавьте виртуальный хост в элемент <HTTPConnection> в ProxyEndpoint. Виртуальный хост автоматически добавляется ко всем новым прокси API. Подробнее о том, как настроить прокси-сервер API для использования виртуального хоста…

После того как вы обновите прокси-сервер API, чтобы использовать виртуальный хост, и создадите запись DNS и запись CNAME для псевдонима хоста, вы сможете получить доступ к прокси-серверу API, как показано ниже.

https://api.myCompany.com/v1/{project-base-path}/{resource-path}

Пример:

https://api.myCompany.com/v1/weather/forecastrss?w=12797282

Как изменить виртуальный хост

Чтобы изменить существующий виртуальный хост, платные клиенты Cloud выполняют две основные задачи:

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

    Примечание. Если вы задали для свойства <KeyStore> или <TrustStore> использование ссылки, вы можете в любое время изменить значение этой ссылки. Однако если вы захотите изменить <KeyStore> или <TrustStore>, чтобы использовать другую ссылку, или изменить <KeyAlias>, чтобы использовать другой псевдоним, вам нужно будет обратиться в службу поддержки Apigee Edge.
  2. Изменение свойств TLS виртуального хоста.

Изменение значения ссылки

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

Прежде чем изменять значение ссылки:

  1. Создайте новое хранилище ключей и загрузите сертификат и ключ, как описано в разделе Создание хранилищ ключей и доверенных хранилищ с помощью интерфейса Edge. В новом хранилище ключей используйте то же название псевдонима ключа, что и в существующем хранилище.
  2. При необходимости создайте новое хранилище доверенных сертификатов и загрузите сертификат, как описано в разделе Создание хранилищ ключей и доверенных сертификатов с помощью интерфейса Edge.
  3. Измените ссылку, как описано в разделе Работа со ссылками.

Как изменить свойства TLS виртуального хоста

Платные клиенты могут использовать API Update a Virtual Host (Обновить виртуальный хост), чтобы обновить виртуальный хост. Этот API позволяет задать все свойства виртуального хоста, описанные в справочнике по свойствам виртуального хоста.

При изменении виртуального хоста Edge выполняет проверку, аналогичную той, которая выполняется при создании виртуального хоста. То есть при изменении Edge проверяет:

  • Домен, указанный в псевдониме хоста, не используется в другой организации и среде.
  • Вы владелец доменного имени. В частности, Edge проверяет, соответствует ли псевдоним хоста следующей информации в сертификате:
    • CN – общее имя
    • SAN – альтернативное имя субъекта
    • Edge проверяет, не истек ли срок действия сертификата.

Чтобы изменить виртуальный хост с помощью Edge API, выполните следующие действия:

  1. Обновите виртуальный хост, используя API Update a Virtual Host. При использовании API в теле запроса необходимо указать полное определение виртуального хоста, а не только элементы, которые вы хотите изменить. В этом примере задано значение свойства proxy_read_timeout:

    curl -X PUT -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts/{vhost_name} \
      -d '<VirtualHost name="myTLSVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Port>443</Port>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://myTestKeystoreRef</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
        <Properties>
           <Property name="proxy_read_timeout">50</Property>
             </Properties>
      </VirtualHost>' \
      -u orgAdminEmail:password

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

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

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

Как обновить виртуальный хост, чтобы использовать ссылку

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

  1. При необходимости создайте новое хранилище ключей и загрузите сертификат, как описано в разделе Создание хранилищ ключей и доверенных хранилищ с помощью интерфейса Edge. Если у вас уже есть хранилище ключей, вы можете настроить ссылку на него.
  2. Создайте новую ссылку на хранилище ключей.
  3. При необходимости создайте новое хранилище доверенных сертификатов и загрузите сертификат. Если у вас уже есть хранилище сертификатов, вы можете настроить ссылку на него.
  4. Создайте новую ссылку на хранилище доверенных сертификатов.
  5. Обновите виртуальный хост, чтобы задать хранилище ключей, псевдоним, хранилище доверенных сертификатов и другие свойства TLS. Полезная нагрузка для вызова:
    curl -X PUT -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts/{vhost_name} \
      -d '<VirtualHost  name="myTLSVHost">
            <HostAliases>
              <HostAlias>api.myCompany.com</HostAlias>
            </HostAliases>
            <Port>443</Port>
            <OCSPStapling>off</OCSPStapling>
            <SSLInfo>
              <Enabled>true</Enabled>
              <ClientAuthEnabled>true</ClientAuthEnabled>
              <KeyStore>ref://myKeyStore2Way</KeyStore>
              <KeyAlias>keyAlias</KeyAlias>
              <TrustStore>ref://myTrustStore2Way</TrustStore>
              <IgnoreValidationErrors>false</IgnoreValidationErrors>
            </SSLInfo>
          </VirtualHost>' \
        -u orgAdminEmail:pWord
  6. Чтобы перезапустить маршрутизаторы Edge и завершить процесс, обратитесь в службу поддержки Apigee.