Skip to content

Настройка доступа по 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 сертификата и ключа, нужно изменить конфигурацию.

Например:

[main]
f.ssl.dir = /opt/my/certs/
q.ssl.dir = /opt/my/certs/
d.proxy.ssl.di = /opt/my/certs/

Не забудьте сделать 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 в качестве обратного прокси.

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

[main]
f.ssl.enabled = no_ssl
f.deck.ip.expose = 127.0.0.0
f.deck.port.expose = 10001

Не забудьте сделать 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