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

Разработчики используют браузер, чтобы отправлять запросы на портал. По умолчанию запросы используют протокол HTTP на порту 9000 узла Portal.
В этом развертывании между узлами Portal и Stack используется балансировщик нагрузки. В этой конфигурации портал отправляет HTTP-запросы балансировщику нагрузки, который затем перенаправляет их на один из узлов стека. Это рекомендуемая среда развертывания для рабочей системы.
Варианты конфигурации TLS
При настройке TLS для API BaaS у вас есть несколько вариантов:
- Настройте TLS на портале и на балансировщике нагрузки для узлов Stack.
В этой конфигурации разработчики используют протокол HTTPS для доступа к порталу, а портал, работающий в браузере, использует HTTPS для отправки запросов к узлам Stack через балансировщик нагрузки. Балансировщик нагрузки использует HTTP для доступа к узлам Stack. - Настройте TLS на портале, балансировщике нагрузки и узлах стека.
Для дополнительной безопасности настройте балансировщик нагрузки на использование TLS для доступа к узлам стека. - Настройка TLS на портале и на одном узле Stack
В небольшой среде, например тестовой или среде разработки, у вас может быть только один узел Stack, а значит, балансировщик нагрузки не нужен. В этой конфигурации настройте TLS как на узлах Portal, так и на узлах Stack. - Настройка TLS на балансировщике нагрузки для Портала
Один из вариантов, не показанных выше, – использовать балансировщик нагрузки перед узлом Портала. В такой конфигурации вы можете настроить TLS на балансировщике нагрузки и, при необходимости, на подключении между балансировщиком нагрузки и порталом.
Убедитесь, что порт TLS открыт
В инструкциях ниже описана настройка TLS на порте 9000 для Portal и порте 8080 для узла Stack. Однако при желании вы можете изменить этот порт.
Независимо от того, какой порт вы используете, убедитесь, что он открыт на узле. Например, чтобы открыть порт 8443, можно использовать следующую команду:
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
Настройка TLS в стеке API BaaS
По умолчанию TLS отключен для API BaaS Stack. Затем вы получаете доступ к BaaS API по протоколу HTTP, используя IP-адрес или DNS-имя узла Stack и порт 8080. Пример:
http://stack_IP:8080
Вы также можете настроить доступ к BaaS API по протоколу TLS, чтобы обращаться к нему в следующем формате:
https://stack_IP:8080
В этом примере вы настраиваете доступ по TLS для использования порта 8080. Однако порт 8080 не является обязательным – вы можете настроить стек для использования другого порта. Единственное требование – брандмауэр должен разрешать трафик через указанный порт.
Стек может поддерживать только один тип запроса (HTTP или HTTPS) через один порт. Поэтому если вы настроите доступ по протоколу HTTPS через порт 8080, то не сможете использовать для этого протокол HTTP. Если вы настроите стек для использования порта 8443 с HTTPS, то стек больше не будет прослушивать порт 8080.
Чтобы настроить доступ к стеку по протоколу TLS, выполните следующие действия:
- Создайте файл хранилища ключей JKS, содержащий сертификат TLS и закрытый ключ. Подробнее о настройке TLS/SSL для локальной версии Edge…
Примечание. Убедитесь, что пароли для хранилища ключей и для ключа совпадают. - Скопируйте файл JKS хранилища ключей в каталог на узле Stack, например /opt/apigee/customer/application. Каталог должен быть доступен пользователю apigee.
- Передайте право собственности на файл JKS пользователю apigee:
> chown apigee:apigee /opt/apigee/customer/application/keystore.jks
где keystore.jks – название файла хранилища ключей. - Измените файл /opt/apigee/customer/application/usergrid.properties, чтобы задать следующие свойства, включая путь к файлу JKS и пароль для хранилища ключей и ключа. Если такого файла нет, создайте его:
tomcat-server_scheme=https
tomcat-server_secure=true
tomcat-server_ssl.enabled=true
tomcat-server_keystore.type=JKS
tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
tomcat-server_keystore.password=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
Внимание! Значение password должно быть в виде обычного текста. Поэтому необходимо защитить файл usergrid.properties от несанкционированного доступа.
Используйте свойство tomcat-server_keyalias, чтобы указать псевдоним хранилища ключей. Псевдоним ключа задается при его создании. Например, вы можете задать его с помощью параметра -alias в команде keytool.
Используйте tomcat-server_ssl.protocols, чтобы задать протоколы TLS, поддерживаемые Stack. Список протоколов, поддерживаемых Java 8, можно найти на странице http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename. - Настройте узел Stack:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Перезапустите стек BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Чтобы убедиться, что TLS работает, выполните следующую команду cURL на узле Stack, используя HTTPS:
> curl -k https://localhost:8080/status -v
Если TLS настроен правильно, вы должны увидеть ответ, содержащий информацию о статусе.
Если вы настроили доступ по TLS через порт, отличный от 8080, измените команду выше, чтобы использовать правильный порт. - Повторите эти действия для всех узлов Stack.
- Если перед узлами Stack у вас есть балансировщик нагрузки, настройте его так, чтобы он отправлял запросы к узлам Stack по протоколу HTTPS. Дополнительную информацию можно найти в документации по балансировщику нагрузки.
Если Портал отправляет прямые запросы к Стеку, настройте Портал так, чтобы он обращался к Стеку по протоколу HTTPS, как описано в следующем разделе. - Чтобы у узла Stack были правильные URL TLS при создании ответов пользователям, выполните процедуру, описанную в разделе "Как настроить узлы API BaaS Stack для использования TLS на Stack или Portal" ниже.
Настройка портала для доступа к стеку по протоколу TLS
Портал BaaS, запущенный в браузере, работает, выполняя вызовы API к стеку BaaS. Если вы настроите BaaS Stack для использования TLS, вам также необходимо настроить портал для выполнения этих вызовов по протоколу HTTPS.
Установка API BaaS обычно настраивается одним из следующих способов:
- Используйте балансировщик нагрузки между узлами Portal и Stack.
Настройте балансировщик нагрузки так, чтобы он отправлял запросы узлам Stack по протоколу HTTPS. Дополнительную информацию можно найти в документации по балансировщику нагрузки.
В этой конфигурации портал может получить доступ к балансировщику нагрузки по протоколу HTTP или HTTPS в зависимости от того, как вы настроите балансировщик нагрузки. Если балансировщик нагрузки использует TLS, выполните описанные ниже действия, чтобы настроить портал для отправки запросов балансировщику нагрузки HTTPS. - Настройте прямые запросы от Портала к Стеку
Настройте Портал для доступа к Стеку по протоколу HTTPS, как описано ниже.
Чтобы настроить портал API BaaS для выполнения вызовов API по протоколу HTTPS, выполните следующие действия:
- Настройте доступ по TLS в стеке BaaS, как описано выше, или в балансировщике нагрузки для узлов стека, как описано в документации к балансировщику нагрузки.
- Измените файл /opt/apigee/customer/application/portal.properties, чтобы задать следующее свойство. Если такого файла нет, создайте его:
baas.portal.config.overrideUrl=https://stackIP:port
В качестве значения этого свойства укажите IP-адрес или DNS-имя и порт узла API Stack для установки с одним узлом или балансировщика нагрузки, если он находится перед узлами API BaaS Stack. - Настройте узел Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Перезапустите портал с помощью следующей команды:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Если вы использовали самозаверяющий сертификат при настройке доступа к стеку по протоколу TLS, ваш браузер может не разрешать запросы к стеку с портала. Если в браузере появится сообщение о том, что доступ к стеку по протоколу HTTPS запрещен, введите в адресную строку следующий URL и добавьте исключение безопасности, чтобы разрешить доступ:
https://stackIP:port/status
Укажите 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 для портала:
- Создайте файл ключа и файл сертификата в формате PEM.
Примечание. Убедитесь, что у ключа или сертификата нет пароля или кодовой фразы. - Скопируйте PEM-файлы в каталог на узле портала, например /opt/apigee/customer/application. Каталог должен быть доступен пользователю apigee.
- Смените владельца PEM-файлов на пользователя apigee:
> chown apigee:apigee /opt/apigee/customer/application/*.PEM - Отредактируйте файл /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
Используйте baas.portal.ssl.protocols, чтобы задать протоколы TLS, поддерживаемые порталом. Список поддерживаемых протоколов можно найти в списке названий протоколов SSL, определенных Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols. - Настройте узел Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Перезапустите Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Чтобы убедиться, что у узла Stack есть правильный URL TLS для Portal, выполните процедуру, описанную в разделе "Как настроить узлы API BaaS Stack для использования TLS на Stack или Portal".
Как настроить узлы API BaaS для TLS в стеке или на портале
Если вы используете балансировщик нагрузки перед узлами Stack или Portal или включаете TLS непосредственно на узле Portal или Stack, вам необходимо настроить узлы с правильными URL для доступа к Stack и Portal. Например, узлам Stack эта информация требуется в следующих случаях:
- Включение URL в ответы на запросы к BaaS API.
- Добавление ссылок в шаблоны электронных писем при сбросе пароля или отправке других уведомлений.
- перенаправлять пользователей на определенные страницы портала;
Если вы используете балансировщик нагрузки перед узлами Stack или настраиваете TLS на узле Stack, задайте следующее свойство в файле /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_usergrid.api.url.base=http://localhost:8080
Замените http://localhost:8080 на URL балансировщика нагрузки. Если балансировщик нагрузки настроен на использование TLS, используйте протокол HTTPS. Порт нужно указывать, только если он нестандартный, то есть не 80 для HTTP и не 443 для HTTPS.
Если вы используете балансировщик нагрузки перед узлами Stack, вам также необходимо задать следующее свойство в файле /opt/apigee/customer/application/portal.properties :
baas.portal.config.overrideUrl=http://localhost:8080
Замените http://localhost:8080 на URL балансировщика нагрузки для стека.
Если вы используете балансировщик нагрузки перед узлом Portal или настраиваете TLS на узле Stack, задайте следующие свойства в файле usergrid.properties:
usergrid-deployment_portal.url=http://localhost:9000
Замените http://localhost:9000 на URL балансировщика нагрузки. Если балансировщик нагрузки настроен на использование TLS, используйте протокол HTTPS. Указывать порт нужно, только если вы используете нестандартный порт, то есть не 80 для HTTP и не 443 для HTTPS.
После изменения файла usergrid.properties:
- Настройте узел Stack:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Перезапустите стек BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Если вы изменили файл portal.properties, настройте узел портала:??
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Перезапустите портал BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart