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/

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

Настройка 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-соединение.

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

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

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

В этой главе вы узнаете, как:

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

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

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

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

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

.