Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Вы можете настроить портал для использования TLS. Процедура настройки TLS для портала зависит от того, как вы его развернули:
- Облако. Настройте TLS в Pantheon или Acquia, облачных сервисах хостинга для портала.
- Apigee Edge для частного облака. Настройте TLS локально на сервере, на котором размещен портал.
TLS и портал
На изображении ниже показаны два места, где портал использует TLS:

- Для обмена данными между порталом и Edge Management API.
Портал не работает как отдельная система. Большая часть информации, используемой порталом, хранится в Edge, который можно развернуть в облаке или локально в виде частного облака. При необходимости портал отправляет HTTP- или HTTPS-запрос к API управления Edge, чтобы получить или отправить информацию.
При создании портала одним из первых шагов будет указание URL API управления Edge. В зависимости от конфигурации Edge Management API этот URL может использовать TLS. Подробнее о том, как создать портал для разработчиков… - Для связи между разработчиками и порталом.
Когда вы используете портал Developer Services для развертывания API, ваши разработчики входят на портал, чтобы зарегистрировать приложения и получить ключи API. Учетные данные для входа и ключ API – это конфиденциальная информация, которую необходимо передавать по протоколу HTTPS, чтобы обеспечить ее безопасность. Такую информацию следует передавать по протоколу HTTPS.
Настройка TLS в этом сценарии зависит от того, как вы развернули портал: в облаке или в Apigee Edge для частного облака. Оба сценария описаны в разделах ниже.
Настройка TLS между порталом и API управления Edge
Настройки Edge Management API определяют, можно ли использовать TLS для обмена данными. Если для API управления Edge настроено использование TLS, портал может использовать HTTPS. В противном случае портал взаимодействует с Edge по протоколу HTTP. Поэтому разработчику портала нужно знать только то, как настроен Edge, чтобы установить связь между порталом и Edge.
Инструкции по настройке подключения к Edge Management API приведены в разделе Создание портала разработчика.
Облачная версия Edge
Если ваш портал подключается к облачной версии Edge, URL для API управления Edge предварительно настраивается Apigee на использование TLS. При настройке портала вы получаете доступ к Edge Management API, используя URL https://api.enterprise.apigee.com/v1.
Установка Edge в частном облаке
Для частного облачного развертывания Edge URL API управления Edge имеет следующий формат:
http://EdgePrivateCloudIp:8080/v1
или:
https://EdgePrivateCloudIp:TLSport/v1
где EdgePrivateCloudIp – IP-адрес сервера управления Edge, а TLSport – порт TLS для API управления Edge. Например, номер порта может быть 8443 или даже 8080 в зависимости от конфигурации Edge.
Настройка TLS между разработчиками и порталом
Настройка TLS между разработчиками и порталом зависит от того, как вы развернули портал: в облаке или в Apigee Edge для частного облака.
Облачные порталы
Pantheon
Pantheon предоставляет бесплатный автоматический протокол HTTPS для всех сайтов на своей платформе через Pantheon Global CDN и с помощью Let's Encrypt. Также ознакомьтесь с разделом HTTPS в глобальной сети доставки контента Pantheon.
Acquia
Чтобы включить TLS/SSL с помощью Acquia, ознакомьтесь с инструкциями по включению SSL.Порталы Edge для частного облака
Во всех рекомендованных Apigee установках портала Private Cloud требуется, чтобы портал находился за балансировщиком нагрузки, как показано ниже:

Поэтому для локальных установок можно настроить TLS двумя способами:
- Настройте TLS на балансировщике нагрузки. Настройте TLS на самом балансировщике нагрузки, а не на портале. Поэтому процедура настройки TLS зависит от балансировщика нагрузки. Дополнительную информацию можно найти в документации к балансировщику нагрузки.
- Настройте TLS на самом портале. При необходимости вы можете настроить TLS на веб-сервере, на котором размещен портал. Подробнее о том, как настроить портал для использования HTTPS…
Чтобы развернуть портал в рабочей среде, необходимо получить собственный сертификат TLS.
Настройка дополнительных параметров TLS
Чтобы изменить конфигурацию TLS для портала, можно отредактировать файл sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако).
При редактировании файла добавьте экземпляры функции ini_set(), чтобы задать свойство. Дополнительную информацию об этой функции можно найти на странице http://php.net/manual/en/function.ini-set.php.
В файле sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако) можно задать следующие свойства:
- cookie_httponly:
(Рекомендуется) Указывает, что файл cookie доступен только по протоколу HTTP. Установите для этого свойства значение:
ini_set('session.cookie_httponly', true); - session.cookie_secure
– (необязательно) указывает, что файлы cookie можно отправлять только через защищенные подключения. Однако это означает, что весь контент должен передаваться по протоколу HTTPS. Если этот параметр включен, сайт не будет работать по протоколу HTTP. Установите это свойство следующим образом:
ini_set('session.cookie_secure', true); - gc_maxlifetime
и cookie_lifetime:
(Необязательно) gc_lifeteime
указывает количество секунд, по истечении которых данные могут быть удалены, а
cookie_lifetime – срок действия файла cookie в секундах. Установите следующие свойства:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Подробнее о настройке TLS между порталом для разработчиков и клиентами рассказывается в статье Enable SSL for Secure HTTPS Communication на сайте документации Pantheon.
Настройка TLS с балансировщиками нагрузки
Для повышения производительности балансировщики нагрузки иногда настраиваются на завершение TLS. При завершении TLS балансировщики нагрузки расшифровывают сообщения, отправленные по протоколу https://, и пересылают их на серверы серверной части по протоколу http://. Это позволяет снизить нагрузку на серверы, которым больше не нужно расшифровывать сообщения https://.
Если балансировщики нагрузки пересылают незашифрованные HTTP-сообщения на серверы в том же центре обработки данных, проблем с безопасностью не возникнет. Однако если балансировщики нагрузки пересылают сообщения по протоколу http:// на серверы за пределами центра обработки данных, например на портал для разработчиков Apigee, сообщения передаются в незашифрованном виде, что создает уязвимость.
Если ваш портал для разработчиков находится за балансировщиками нагрузки, которые используют завершение TLS, и вы хотите, чтобы весь трафик передавался по протоколу https://, на страницах сайта должны быть только ссылки https://. Кроме того, вам нужно добавить следующий код в файл портала для разработчиков sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако). Поскольку балансировщик нагрузки не преобразует автоматически контент HTML-страниц, код обеспечивает, чтобы все ссылки, передаваемые клиенту, начинались с https://.
Чтобы настроить TLS с балансировщиками нагрузки, добавьте следующие строки в файл sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако):
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Set HTTPS URL of portal $base_url = 'https://developers.myCo.com'; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO' ]) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO' ]) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO' ]) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here. header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Статьи по теме
- https://drupal.org/node/425990
- https://drupal.org/node/313145
- http://drupal.stackexchange.com/questions/102091/drupal-behind-a-ssl-offloading-reverse-proxy-is-this-config-correct
Перенаправление трафика портала на HTTPS
Вы можете перенаправить весь трафик портала на HTTPS, обновив файл sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако). Необходимые изменения зависят от того, перенаправляете ли вы на HTTPS с одного или нескольких имен хостов.
Переадресация на HTTPS с тем же именем хоста
Добавьте следующий код в файл sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако), чтобы перенаправлять весь трафик портала на HTTPS на том же имени хоста (например, *.devportal.apigee.io).
В этом случае, если разработчик откроет ваш портал по адресу live-example.devportal.apigee.io, но ему понадобится доступ к сертификату, загруженному для devportal.example.com, запрос будет отклонен.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Переадресация на HTTPS на нескольких именах хостов
Добавьте следующий код в файл sites/default/settings.local.php (облако) или sites/default/settings.php (частное облако), чтобы перенаправлять весь трафик портала на HTTPS для нескольких имен хостов.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Assume we are not forcing a redirect until proven otherwise. $force_redirect = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { // We will force a redirect because HTTPS is required. $force_redirect = TRUE; } // This works on Pantheon only; the constant is undefined elsewhere. switch (PANTHEON_ENVIRONMENT) { case 'dev': $canonical_hostname = 'dev.devportal.example.com'; break; case 'test': $canonical_hostname = 'test.devportal.example.com'; break; case 'live': $canonical_hostname = 'devportal.example.com'; break; default: $canonical_hostname = strtolower($_SERVER['HTTP_HOST']); break; } if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) { // We will force a redirect because hostname is not canonical. $force_redirect = TRUE; } if ($force_redirect) { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']); exit; } }