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/

Не забудьте выполнить реконфигурацию, как описано в главе Реконфигурация, чтобы изменения вступили в силу

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

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

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

Не забудьте выполнить реконфигурацию, как описано в главе Реконфигурация, чтобы изменения вступили в силу

Пример 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 .