Настройка TLS для API BaaS

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

TLS (Transport Layer Security, предшественником которого является SSL) — это стандартная технология безопасности, обеспечивающая безопасный зашифрованный обмен сообщениями в вашей среде API. Вы можете настроить TLS на узлах API BaaS Portal и API BaaS Stack.

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

Разработчики используют браузер для отправки запросов на Портал. По умолчанию запросы используют протокол HTTP на порту 9000 узла портала.

Это развертывание включает в себя балансировщик нагрузки между узлами портала и стека. В этой конфигурации портал отправляет HTTP-запросы к балансировщику нагрузки, а затем балансировщик нагрузки перенаправляет запросы на один из узлов стека. Это рекомендуемая среда развертывания для производственной системы.

Параметры конфигурации TLS

При настройке TLS для API BaaS у вас есть несколько вариантов:

  • Настройте TLS на портале и в балансировщике нагрузки для узлов стека.

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

    Для дополнительной безопасности настройте балансировщик нагрузки на использование TLS для доступа к узлам стека.
  • Настройте TLS на портале и на одном узле стека.

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

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

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

Приведенные ниже процедуры настраивают TLS на порте портала по умолчанию 9000 и узле стека 8080. Однако при желании вы можете изменить этот порт.

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

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

Настройка TLS в стеке API BaaS

По умолчанию TLS отключен для стека API BaaS. Затем вы получаете доступ к API BaaS через HTTP, используя IP-адрес или DNS-имя узла стека и порт 8080. Например:

http://stack_IP:8080

Альтернативно вы можете настроить доступ TLS к API BaaS, чтобы иметь к нему доступ в форме:

https://stack_IP:8080

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

Стек может поддерживать только один тип запроса (HTTP или HTTPS) через один порт. Таким образом, если вы настроите доступ HTTPS к порту 8080, вы не сможете использовать HTTP для доступа к порту 8080. Если вы настроите стек на использование порта 8443 с HTTPS, то стек больше не будет прослушивать порт 8080.

Используйте следующую процедуру для настройки доступа TLS к стеку:

  1. Создайте файл JKS хранилища ключей, содержащий ваш сертификат TLS и закрытый ключ. Дополнительные сведения см. в разделе Настройка TLS/SSL для Edge On Premises .
    Примечание . Убедитесь, что пароль в хранилище ключей и для ключа одинаковы.
  2. Скопируйте файл JKS хранилища ключей в каталог на узле стека, например /opt/apigee/customer/application . Каталог должен быть доступен пользователю apigee.
  3. Измените владельца файла JKS на пользователя apigee:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    где keystore.jks — имя вашего файла хранилища ключей.
  4. Отредактируйте файл /opt/apigee/customer/application/usergrid.properties , чтобы установить следующие свойства, включая путь к файлу JKS и пароль в хранилище ключей и ключе. Если этот файл не существует, создайте его:
    tomcat-server_scheme=https
    tomcat-server_secure=истина
    tomcat-server_ssl.enabled=истина
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file= /opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password= пароль
    tomcat-server_keyalias= keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # По умолчанию доступ TLS использует порт 8080.
    # Используйте это свойство, чтобы указать другой порт.
    # tomcat-server_port=8080


    Внимание : значение пароля должно быть в виде открытого текста. Поэтому вам следует защитить usergrid.properties от несанкционированного доступа.

    Используйте свойство tomcat-server_keyalias, чтобы указать псевдоним хранилища ключей. Вы устанавливаете псевдоним ключа во время создания ключа. Например, вы можете установить его, используя опцию -alias команды keytool .

    Используйте tomcat-server_ssl.protocols, чтобы установить протоколы TLS, поддерживаемые стеком. Список протоколов, поддерживаемых Java 8, см. на странице http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename .
  5. Настройте узел стека:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid настроить
  6. Разверните изменения в Tomcat:
    > /opt/apigee/apigee-service/bin/apigee-service развертывание baas-usergrid
  7. Перезапустите стек BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service перезапуск baas-usergrid
  8. Убедитесь, что TLS работает, выполнив следующую команду cURL на узле стека с использованием HTTPS:
    > локон -k https://localhost:8080/статус -v

    Если TLS настроен правильно, вы должны увидеть ответ, содержащий информацию о состоянии.

    Если вы настроили доступ TLS через порт, отличный от 8080, измените приведенную выше команду, чтобы использовать правильный порт.
  9. Повторите эти действия на всех узлах стека.
  10. Если у вас есть балансировщик нагрузки перед узлами стека , настройте балансировщик нагрузки для отправки запросов к узлам стека через HTTPS. Дополнительную информацию см. в документации по вашему балансировщику нагрузки.

    Если портал отправляет прямые запросы к стеку , настройте портал для доступа к стеку через HTTPS, как описано в следующем разделе.
  11. Используйте процедуру, описанную ниже в разделе «Настройка узлов стека API BaaS для TLS в стеке или на портале», чтобы убедиться, что узел стека имеет правильные URL-адреса TLS при создании ответов пользователей.

Настройка портала для доступа к стеку по TLS

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

Установка API BaaS обычно настраивается для:

  • Используйте балансировщик нагрузки между узлами портала и стека.

    Настройте балансировщик нагрузки для отправки запросов к узлам стека через HTTPS. Дополнительную информацию см. в документации по вашему балансировщику нагрузки.

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

    Настройте портал для доступа к стеку через HTTPS, как описано ниже.

Используйте следующую процедуру, чтобы настроить портал API BaaS для выполнения вызовов API через HTTPS:

  1. Настройте доступ TLS к стеку BaaS, как описано выше, или к балансировщику нагрузки для узлов стека, как описано в документации для вашего балансировщика нагрузки.
  2. Отредактируйте /opt/apigee/customer/application/portal.properties , чтобы установить следующее свойство. Если этот файл не существует, создайте его:
    baas.portal.config.overrideUrl=https:// stackIP:port

    Укажите в качестве значения этого свойства IP-адрес или DNS-имя и порт узла стека API для установки с одним узлом или балансировщика нагрузки, если у вас есть балансировщик нагрузки перед узлами стека API BaaS.
  3. Настройте узел Портала:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal настроить
  4. Перезапустите Портал с помощью команды:
    > /opt/apigee/apigee-service/bin/apigee-service перезапуск baas-portal
  5. Если вы использовали самозаверяющий сертификат при настройке доступа TLS к стеку выше , ваш браузер может не разрешать запросы к стеку с портала. Если вы видите в браузере ошибку о том, что доступ к стеку по протоколу HTTPS запрещен, запросите следующий URL-адрес в своем браузере и добавьте исключение безопасности, чтобы разрешить доступ:
    https:// stackIP:порт /статус

    Укажите IP-адрес или DNS-имя и порт узла стека API или балансировщика нагрузки.

Настройка TLS на портале API BaaS

По умолчанию пользователи получают доступ к порталу, отправляя незашифрованные HTTP-запросы через порт 9000 на сервере портала. Вы можете настроить портал на использование HTTPS для шифрования данных, отправляемых на портал и обратно.

По умолчанию вы получаете доступ к порталу через HTTP, используя IP-адрес или DNS-имя узла портала и порт 9000. Например:

http://portal_IP:9000

Альтернативно, вы можете настроить TLS-доступ к Порталу, чтобы иметь к нему доступ в форме:

https://portal_IP:9443

В этом примере вы настраиваете доступ TLS для использования порта 9443. Однако порт 9443 не требуется — вы можете настроить портал на использование другого порта.

Портал может поддерживать только один тип запросов (HTTP или HTTPS) через один порт. Таким образом, если вы настроите доступ HTTPS к порту 9000, вы не сможете использовать HTTP для доступа к порту 9000. Если вы настроите портал на использование порта 9443 с HTTPS, то портал больше не будет прослушивать порт 9000.

Чтобы настроить TLS для портала:

  1. Создайте файл ключа и файл сертификата в формате PEM.
    Примечание . Убедитесь, что в ключе или сертификате нет пароля/парольной фразы.
  2. Скопируйте файлы PEM в каталог на узле портала, например /opt/apigee/customer/application . Каталог должен быть доступен пользователю apigee.
  3. Измените владельца файлов PEM на пользователя apigee:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Отредактируйте файл /opt/apigee/customer/application/portal.properties , чтобы установить следующие свойства. Если этот файл не существует, создайте его:
    baas.portal.ssl=on
    baas.portal.ssl.certificate= /opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key= /opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # По умолчанию доступ TLS использует порт 9000.
    # Используйте это свойство, чтобы указать другой порт.
    # baas.portal.listen=9000


    Используйте баас. портал.ssl.protocols для установки протоколов TLS, поддерживаемых порталом. Список поддерживаемых протоколов см. в списке имен протоколов SSL, определенных Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols .
  5. Настройте узел Портала:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal настроить
  6. Разверните конфигурацию:
    > /opt/apigee/apigee-service/bin/apigee-service развертывание baas-portal
  7. Перезапустите портал:
    > /opt/apigee/apigee-service/bin/apigee-service перезапуск baas-portal
  8. Используйте процедуру, описанную ниже в разделе «Настройка узлов стека API BaaS для TLS в стеке или на портале», чтобы убедиться, что узел стека имеет правильный URL-адрес TLS для портала.

Настройте узлы API BaaS для TLS в стеке или на портале.

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

  • Включение URL-адреса в ответы на запросы API BaaS.
  • Добавление ссылок в шаблоны электронных писем при сбросе пароля или отправке других уведомлений.
  • Перенаправление пользователей на определенные страницы Портала.

Если вы используете балансировщик нагрузки перед узлами стека или настраиваете TLS на узле стека, установите следующие свойства в /opt/apigee/customer/application/usergrid.properties :

usergrid-deployment_swagger.basepath=http://localhost:8080
usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate
usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw

Замените http://localhost:8080 URL-адресом балансировщика нагрузки. Если балансировщик нагрузки настроен на использование TLS, используйте протокол HTTPS. Вам нужно указать порт только в том случае, если вы используете нестандартный порт, то есть порт, отличный от порта 80 для HTTP и порта 443 для HTTPS.

Вам также необходимо установить следующее свойство в /opt/apigee/customer/application/portal.properties , если вы используете балансировщик нагрузки перед узлами стека:

baas.portal.config.overrideUrl=http://localhost:8080

Замените http://localhost:8080 URL-адресом балансировщика нагрузки для стека.

Если вы используете балансировщик нагрузки перед узлом портала или настраиваете TLS на узле стека, установите следующие свойства в usergrid.properties :

usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.confirm=http://localhost:9000

Замените http://localhost:9000 URL-адресом балансировщика нагрузки. Если балансировщик нагрузки настроен на использование TLS, используйте протокол HTTPS. Вам нужно указать порт только в том случае, если вы используете нестандартный порт, то есть порт, отличный от порта 80 для HTTP и порта 443 для HTTPS.

После редактирования usergrid.properties :

  1. Настройте узел стека:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid настроить
  2. Разверните изменения в Tomcat:
    > /opt/apigee/apigee-service/bin/apigee-service развертывание baas-usergrid
  3. Перезапустите стек BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service перезапуск baas-usergrid
  4. Если вы изменили портал.properties , настройте узел Портал:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal настроить
  5. Разверните изменения:
    > /opt/apigee/apigee-service/bin/apigee-service развертывание baas-portal
  6. Перезапустите портал BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service перезапуск baas-portal