Настройка доступа по 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 сертификата и ключа, нужно изменить конфигурацию.
Например:
Не забудьте сделать reconfig
как указано в параграфе
Реконфигурация что бы изменения вступили в силу.
Настройка 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-соединение.
Не забудьте сделать reconfig
как указано в параграфе
Реконфигурация что бы изменения вступили в силу.
Настройка обратного прокси
При необходимости Apiary может бежать за вашим собственным обратным прокси сервером.
В этом параграфе мы рассмотрим настройку nginx
, который будет установлен на ту же машину
и будет проксировать все запросы на Apiary.
В этом параграфе мы сделаем:
- настроим Apiary что бы он не мешал обратному прокси;
- настроим
nginx
в качестве обратного прокси.
Чтобы использовать свой прокси сервер на этой же машине, необходимо изменить конфигурацию:
Не забудьте сделать reconfig
как указано в параграфе
Реконфигурация что бы изменения вступили в силу.
Пример №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