Настройка доступа по https
⚠️ Сразу после установки Apiary WebUI и API доступен только по небезопасному протоколу HTTP.
Для настройки безопасного соединения поддерживается несколько опций на выбор:
- Загрузка собственных TLS-сертификатов на машину с Apiary и выполнение настройки доступа HTTP/HTTPs;
- настройка своего HTTP или TCP Reverse proxy с TLS-терминированием перед Apiary.
⚠️ Если вы хотите использовать самоподписанные TLS-сертификаты для интеграции Apiary со сторонними системами или сертификаты, выдаваемые центром сертификации внутри организации, изучите главу Корневые TLS сертификаты.
Загрузка TLS-сертификатов
Загрузите свои TLS-сертификаты на машину, на которой установлен Apiary:
- Полную цепочку TLS-сертификатов в формате PEM.
Файл должен называться
cert.pemи быть доступным для чтения всем пользователям. - Приватный ключ к этому сертификату в формате PEM.
Файл должен называться
key.pemи быть доступным для чтения всем пользователям.
Вы можете использовать для этого
директории по умолчанию:
/opt/hw-Apiary/fssl;/opt/hw-Apiary/dpssl;/opt/hw-Apiary/qssl.
Обратите внимание, что загруженные файлы не будут перезаписываться при обновлении на следующую версию, поэтому их можно хранить в этой директории. Обратите внимание на README.md файлы в этих директориях.
Также можно хранить сертификаты в другой директории, если директория по умолчанию вам не подходит.
Например, в директории /opt/my/certs/.
Чтобы изменить директорию для TLS-сертификата и ключа, нужно изменить конфигурацию.
Пример:
Не забудьте выполнить реконфигурацию, как описано в главе Реконфигурация, чтобы изменения вступили в силу
Настройка HTTP/HTTPs
Чтобы настроить перенаправление с HTTP на HTTPs без использования стороннего обратного прокси-сервера, нужно изменить конфигурацию.
Пример:
[main]
f.ssl.enabled = ssl_redirect
f.deck.ip.expose = 0.0.0.0
f.deck.port.expose = 80
f.deck.https.ip.expose = 0.0.0.0
f.deck.https.port.expose = 443
В данном примере:
f.ssl.enabled— режим работы TLS. Возможные значения описаны ниже.f.deck.ip.expose— IP-адрес для небезопасного HTTP-соединения (0.0.0.0— внешний IP адрес,127.0.0.1— локальный IP адрес). Обязательно для режимовno_ssl,ssl_bothиssl_redirect.f.deck.port.expose— номер порта для небезопасного HTTP-соединения (значение по умолчанию — 80). Обязательно для режимовno_ssl,ssl_bothиssl_redirect.f.deck.https.ip.expose— IP-адрес для безопасного HTTPs-соединения (0.0.0.0— внешний IP-адрес,127.0.0.1— локальный IP-адрес). Обязательно для режимовssl_only,ssl_bothиssl_redirect.f.deck.https.port.expose— номер порта для безопасного HTTPs-соединения. Обязательно для режимовssl_only,ssl_bothиssl_redirect.
Режимы работы TLS f.ssl.enabled:
no_ssl— используется только HTTP-соединение (установлено по умолчанию);ssl_both— параллельно используется HTTP-соединение и HTTPs-соединение;ssl_redirect— используется перенаправление с HTTP-соединения на HTTPs-соединение;ssl_only— используется только HTTPs-соединение.
Не забудьте выполнить реконфигурацию, как описано в главе Реконфигурация, чтобы изменения вступили в силу
Настройка обратного прокси
При необходимости Apiary может бежать за вашим обратным прокси-сервером.
В этой главе мы рассмотрим настройку nginx, который будет установлен на ту же машину
и будет проксировать все запросы на Apiary.
В этой главе вы узнаете, как:
- настроить Apiary, чтобы он не мешал обратному прокси;
- настроить
nginxв качестве обратного прокси.
Чтобы использовать свой прокси-сервер на этой же машине, необходимо изменить конфигурацию:
Не забудьте выполнить реконфигурацию, как описано в главе Реконфигурация, чтобы изменения вступили в силу
Пример 1. Конфигурации nginx с http и https:
server {
server_name your-apiary.example.com;
access_log /var/log/nginx/your-apiary.example.com-access.log;
error_log /var/log/nginx/your-apiary.example.com-error.log;
client_max_body_size 0;
location / {
proxy_pass http://localhost:10001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
listen 443 ssl;
ssl_certificate /path/to-your/certs/fullchain.pem;
ssl_certificate_key /path/to-your/certs/privkey.pem;
}
server {
if ($host = your-apiary.example.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name your-apiary.example.com;
return 404;
}
В данном примере:
10001— номер порта, который вы указали в опцииf.deck.port.exposeв файлеuser.ini;apiary.example.com— имя хоста или IP-адрес вашей машины с установленным Apiary.
Пример 2. Конфигурация nginx, готовая для использования с Let's Encrypt при помощи certbot:
Данную конфигурацию необходимо установить до выпуска сертификатов при помощи certbot.
server {
listen 80;
server_name your-apiary.example.com;
access_log /var/log/nginx/your-apiary.example.com-access.log;
error_log /var/log/nginx/your-apiary.example.com-error.log;
client_max_body_size 0;
location / {
proxy_pass http://localhost:10001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
В данном примере:
10001— номер порта, который вы указали в опцииf.deck.port.exposeв файлеuser.ini;apiary.example.com— имя хоста или IP-адрес вашей машины с установленным Apiary.
TLS-сертификаты для Rabbitmq
После установки RabbitMQ по умолчанию запускается на небезопасном порту 5672.
Вы можете использовать этот порт, если Apiary и Hive
установлены в безопасной локальной сети или в тестовой среде.
Однако для производственной среды мы рекомендуем использовать безопасное соединение и настроить порт 5671
вместо небезопасного 5672.
Это можно сделать при помощи того же TLS-сертификата, что и для HTTPs для WebUI.
Загрузите собственные TLS полную цепочку сертификатов cert.pem и приватный ключ key.pem в формате PEM
в директорию /opt/hw-fh/qssl (или измените этот путь в свойстве конфигурации) и
выполните реконфигурацию
для RabbitMQ:
[main]
q.ssl.enabled = ssl_only
rmq.ip.ssl.expose = 0.0.0.0
rmq.port.ssl.expose = 5671
rmq.client.host = my.apiary.host.com
rmq.client.port = 5671
Применимые опции:
q.ssl.enabled— режим работы TLS. Возможные значения указаны ниже;rmq.port.expose— номер порта для небезопасного TCP-соединения;rmq.ip.expose— IP-адрес для небезопасного TCP-соединения;rmq.port.ssl.expose— номер порта для безопасного TCP-соединения;rmq.ip.ssl.expose— IP-адрес для безопасного TCP-соединения;rmq.client.host option— IP-адрес или имя хоста Apiary;rmq.client.port— номер порта Apiary (5671или5672);
Возможные значения режима работы TLS q.ssl.enabled:
no_ssl— используется только небезопасное TCP-соединение (установлено по умолчанию);ssl_both— используются как небезопасное, так и безопасное TCP-соединение (используйте эту опцию, только если вам известно, для чего нужны оба вида TCP-соединений);ssl_only— используется только безопасное TCP-соединение (рекомендуется для производственной среды).
⚠️ Если для интеграции Apiary и Hive вы используете самоподписанные TLS-сертификаты
или сертификаты, выдаваемые центром сертификации внутри организации, внимательно изучите главу Корневые TLS-сертификаты.
Корневые сертификаты должны быть установлены на каждый из Apiary и Hive
.