Skip to content

Настройка доступа по https

⚠️ Сразу после установки Hive WebUI и API доступен только по небезопасному протоколу HTTP.

Для настройки безопасного соединения поддерживается несколько опций на выбор:

  • вы можете загрузить собственные TLS сертификаты на машину с Hive и выполнить настройку доступа HTTP/HTTPs;
  • настроить свой HTTP или TCP Reverse proxy с TLS-терминированием перед Hive.

⚠️ Если вы хотите использовать самоподписанные TLS сертификаты для интеграции Hive со сторонними системами, или сертификаты, выдаваемые центром сертификации внутри организации, то изучите главу Корневые TLS сертификаты.

Загрузка TLS сертификатов

Загрузите ваши собственные TLS сертификаты на машину, на которой установлен Hive:

  • Полную цепочку TLS сертификатов в формате PEM. Файл должен иметь имя cert.pem и быть доступен для чтения всем пользователям.
  • Приватный ключ к этому сертификату в формате PEM. Файл должен иметь имя key.pem и быть доступен для чтения всем пользователям.

Вы можете использовать для этого

директорию по умолчанию: /opt/hw-Hive/ssl.

Обратите внимание, что загруженные файлы не будут перезаписываться при обновлении на следующую версию, поэтому их можно хранить в этой директории. Обратите внимание на README.md файлы в этой директории.

Вы также можете хранить сертификаты в другой директории, если директория по умолчанию вам не подходит. Например, в директории /opt/my/certs/.

Для того, что бы изменить директорию для TLS сертификата и ключа, нужно изменить конфигурацию.

Например:

[main]
b.ssl.dir = /opt/my/certs/

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

Настройка HTTP/HTTPs

Чтобы настроить перенаправление с HTTP на HTTPs без использования стороннего обратного прокси сервера нужно изменить конфигурацию.

Пример:

[main]
b.ssl.enabled = ssl_redirect
b.deck.ip.expose = 0.0.0.0
b.deck.port.expose = 80
b.deck.https.ip.expose = 0.0.0.0
b.deck.https.port.expose = 443

В данном примере:

  • b.ssl.enabled: режим работы TLS. Возможные значения описаны ниже.
  • b.deck.ip.expose: IP адрес для небезопасного HTTP-соединения (0.0.0.0 - внешний IP адрес, 127.0.0.1 - локальный IP адрес); Обязательно для режимов no_ssl, ssl_both и ssl_redirect.
  • b.deck.port.expose: номер порта для небезопасного HTTP-соединения (значение по умолчанию - 80). Обязательно для режимов no_ssl, ssl_both и ssl_redirect.
  • b.deck.https.ip.expose: IP адрес для безопасного HTTPs-соединения (0.0.0.0 - внешний IP адрес, 127.0.0.1 - локальный IP адрес). Обязательно для режимов ssl_only, ssl_both и ssl_redirect.
  • b.deck.https.port.expose: номер порта для безопасного HTTPs-соединения. Обязательно для режимов ssl_only, ssl_both и ssl_redirect.

Режимы работы TLS b.ssl.enabled:

  • no_ssl - используется только небезопасное HTTP-соединение (установлено по умолчанию);
  • ssl_both - используется как небезопасное HTTP-соединение, так и безопасное HTTPs-соединение параллельно;
  • ssl_redirect - используется перенаправление с небезопасного HTTP-соединения на безопасное HTTPs-соединение;
  • ssl_only - используется только безопасное HTTPs-соединение.

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

Настройка обратного прокси

При необходимости Hive может бежать за вашим собственным обратным прокси сервером. В этом параграфе мы рассмотрим настройку nginx, который будет установлен на ту же машину и будет проксировать все запросы на Hive.

В этом параграфе мы сделаем:

  • настроим Hive что бы он не мешал обратному прокси;
  • настроим nginx в качестве обратного прокси.

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

[main]
b.ssl.enabled = no_ssl
b.deck.ip.expose = 127.0.0.0
b.deck.port.expose = 10002

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

Пример №1. Конфигурации nginx с http и https:

server {
  server_name your-hive.example.com;
  access_log /var/log/nginx/your-hive.example.com-access.log;
  error_log /var/log/nginx/your-hive.example.com-error.log;

  client_max_body_size 0;

  location / {
      proxy_pass http://localhost:10002;
      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-hive.example.com) {
      return 301 https://$host$request_uri;
  }

  listen 80;
  server_name your-hive.example.com;
  return 404;
}

В этом примере:

  • 10002 - номер порта, который вы указали в свойстве b.deck.port.expose в файле user.ini;
  • hive.example.com - имя хоста или IP адрес вашей машины с установленным Hive.

Пример №2. Конфигурация, nginx, готовая для использования с Let's Encrypt при помощи certbot.

Данную конфигурацию необходимо установить до выпуска сертификатов при помощи certbot.

server {
  listen 80;
  server_name your-hive.example.com;
  access_log /var/log/nginx/your-hive.example.com-access.log;
  error_log /var/log/nginx/your-hive.example.com-error.log;

  client_max_body_size 0;

  location / {
      proxy_pass http://localhost:10002;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
  }
}

В этом примере:

  • 10002 - номер порта, который вы указали в свойстве b.deck.port.expose в файле user.ini;
  • hive.example.com - имя хоста или IP адрес вашей машины с установленным Hive.