Как настроить TLS для интерфейса управления

По умолчанию доступ к интерфейсу Edge осуществляется по протоколу HTTP с использованием IP-адреса узла сервера управления и порта 9000. Пример:

http://ms_IP:9000

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

https://ms_IP:9443

В этом примере вы настроите доступ TLS для использования порта 9443. Однако этот номер порта не является обязательным для Edge – вы можете настроить сервер управления на использование других значений портов. Единственное требование – чтобы брандмауэр разрешал трафик через указанный порт.

Убедитесь, что порт TLS открыт

В этой процедуре TLS настраивается на использование порта 9443 на сервере управления. Какой бы порт вы ни использовали, убедитесь, что он открыт на сервере управления. Например, чтобы открыть его, можно использовать следующую команду:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9443 -j ACCEPT --verbose

Как настроить TLS

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

  1. Создайте файл хранилища ключей JKS, содержащий сертификат TLS и закрытый ключ, и скопируйте его в узел сервера управления. Подробнее о том, как настроить TLS/SSL для локальной версии Edge…
  2. Чтобы настроить TLS, выполните следующую команду:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl
  3. Введите номер порта HTTPS, например 9443.
  4. Укажите, нужно ли отключить доступ по протоколу HTTP к интерфейсу управления. По умолчанию доступ к интерфейсу управления осуществляется через HTTP по порту 9000.
  5. Введите алгоритм хранилища ключей. По умолчанию используется формат JKS.
  6. Укажите абсолютный путь к файлу хранилища ключей JKS.

    Скрипт копирует файл в каталог /opt/apigee/customer/conf на узле сервера управления и передает право собственности на файл пользователю apigee.

  7. Введите пароль хранилища ключей в виде обычного текста.
  8. После этого скрипт перезапускает интерфейс управления Edge. После перезапуска интерфейс управления поддерживает доступ по протоколу TLS.

    Эти настройки можно посмотреть в выпуске /opt/apigee/etc/edge-ui.d/SSL.sh.

Как настроить TLS с помощью файла конфигурации

Вместо описанной выше процедуры можно передать файл конфигурации команде на шаге 2. Этот метод необходимо использовать, если вы хотите задать необязательные свойства TLS.

Чтобы использовать файл конфигурации, создайте новый файл и добавьте следующие свойства:

HTTPSPORT=9443
DISABLE_HTTP=y
KEY_ALGO=JKS
KEY_FILE_PATH=/opt/apigee/customer/application/mykeystore.jks
KEY_PASS=clearTextKeystorePWord

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

/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f configFile

где configFile – полный путь к сохраненному файлу.

Как настроить интерфейс Edge, если TLS завершается на балансировщике нагрузки

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

Дополнительная конфигурация требуется, когда интерфейс Edge отправляет пользователям электронные письма с предложением задать пароль при создании аккаунта или при запросе на сброс забытого пароля. В этом письме будет URL, по которому пользователь сможет установить или сбросить пароль. По умолчанию, если в интерфейсе Edge не настроено использование TLS, URL в сгенерированном электронном письме использует протокол HTTP, а не HTTPS. Вам необходимо настроить балансировщик нагрузки и интерфейс Edge так, чтобы адрес электронной почты создавался с использованием протокола HTTPS.

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

X-Forwarded-Proto: https

Чтобы настроить интерфейс Edge:

  1. Откройте файл /opt/apigee/customer/application/ui.properties в редакторе. Если файла нет, создайте его:
    vi /opt/apigee/customer/application/ui.properties
  2. Задайте в свойстве ui.properties следующее значение:
    conf/application.conf+trustxforwarded=true
  3. Сохраните изменения в файле ui.properties.
  4. Перезапустите интерфейс Edge:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

Как задать необязательные свойства TLS

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

  • Протокол TLS по умолчанию
  • Список поддерживаемых протоколов TLS
  • Поддерживаемые алгоритмы TLS
  • Поддерживаемые шифры TLS

Эти необязательные параметры доступны только в том случае, если в файле конфигурации задано следующее свойство конфигурации, как описано в разделе Как использовать файл конфигурации для настройки TLS:

TLS_CONFIGURE=y

В таблице ниже описаны эти свойства.

Свойство Описание
TLS_PROTOCOL Определяет протокол TLS по умолчанию для интерфейса Edge. По умолчанию используется TLS 1.2. Допустимые значения: TLSv1.2, TLSv1.1, TLSv1.
TLS_ENABLED_PROTOCOL

Определяет список включенных протоколов в виде массива, элементы которого разделены запятыми. Пример:

TLS_ENABLED_PROTOCOL=[\"TLSv1.2\", \"TLSv1.1\", \"TLSv1\"]

Обратите внимание, что символ " нужно экранировать.

По умолчанию включены все протоколы.

TLS_DISABLED_ALGO

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

Значения, передаваемые в TLS_DISABLED_ALGO, соответствуют допустимым значениям для jdk.tls.disabledAlgorithms, как описано здесь. Однако при задании значения TLS_DISABLED_ALGO необходимо экранировать пробелы:

TLS_DISABLED_ALGO=EC\ keySize\ <\ 160,RSA\ keySize\ <\ 2048
TLS_ENABLED_CIPHERS

Определяет список доступных шифров TLS в виде массива, разделенного запятыми. Пример:

TLS_ENABLED_CIPHERS=[\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",
\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\"]

Обратите внимание, что символ " нужно экранировать.

Список шифров, включенных по умолчанию:

"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"SSL_RSA_WITH_RC4_128_SHA",
"SSL_RSA_WITH_RC4_128_MD5",
"TLS_EMPTY_RENEGOTIATION_INFO_SCSV"

Список доступных шифров можно найти здесь.

Как отключить протоколы TLS

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

  1. Откройте файл конфигурации в редакторе.
  2. Чтобы отключить один протокол TLS, например TLSv1.0, добавьте в файл конфигурации следующие строки:
    TLS_CONFIGURE=y
    TLS_DISABLED_ALGO="tlsv1"

    Чтобы отключить несколько протоколов, например TLSv1.0 и TLSv1.1, добавьте в файл конфигурации следующие строки:

    TLS_CONFIGURE=y
    TLS_DISABLED_ALGO="tlsv1, tlsv1.1"
  3. Сохраните изменения в файле конфигурации.
  4. Чтобы настроить TLS, выполните следующую команду:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f configFile

    где configFile – полный путь к файлу конфигурации.

  5. Перезапустите интерфейс Edge:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

Используйте защищенные файлы cookie

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

Файлы cookie без флага secure могут позволить злоумышленнику перехватить и повторно использовать файл cookie или взломать активный сеанс. Поэтому рекомендуется включить этот параметр.

Чтобы задать флаг secure для файлов cookie интерфейса Edge:

  1. Откройте в текстовом редакторе следующий файл:
    /opt/apigee/customer/application/ui.properties

    Если файла нет, создайте его.

  2. В файле ui.properties задайте для свойства conf_application_session.secure значение true, как показано в примере ниже.
    conf_application_session.secure=true
  3. Сохраните изменения.
  4. Перезапустите интерфейс Edge с помощью утилиты apigee-serice, как показано в следующем примере:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

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

curl -i -v https://edge_UI_URL

Заголовок должен содержать строку, которая выглядит следующим образом:

Set-Cookie: secure; ...

Как отключить TLS в интерфейсе Edge

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

/opt/apigee/apigee-service/bin/apigee-service edge-ui disable-ssl