Статья описывает настройку адресов, по которым будет доступен веб-интерфейс платформы. Вы можете выполнить настройки через веб-интерфейс BILLmanager или через изменение файлов конфигурации. Настройки, выполненные в веб-интерфейсе, добавляются в файл конфигурации сервиса ihttpd — /usr/local/mgr5/etc/ihttpd.conf.
По умолчанию платформа работает через встроенный веб-сервер — ihttpd. Веб-интерфейс доступен по следующему адресу:
https://<IP-адрес_сервера>:1500/billmgr
Добавление нового адреса
Чтобы добавить новый адрес, перейдите в раздел Настройки → Адреса панели → кнопка Создать. Заполните форму:
- IP-адрес — выберите IP-адрес, который будет использоваться для приёма входящих соединений.
-
Порт — укажите номер порта, который будет использован для приёма входящих соединений. Если оставить это поле пустым, будет использован порт по умолчанию — 1500.
Обратите внимание!При изменении порта BILLmanager может стать недоступным. Перед изменением откройте в правилах брандмауэра ОС порт, который нужно назначить платформе. -
Запретить HTTP соединения — включите опцию, чтобы перенаправлять все запросы на HTTPS. С выключенной опцией встроенный веб-сервер может принимать запросы как по HTTP, так и по HTTPS-протоколам.
- 80 порт используется по умолчанию в протоколе HTTP.
-
443 порт используется по умолчанию в протоколе HTTPS.
Не включайте опцию Запретить HTTP соединения в настройках адреса с 80 и 443 портами одновременно.
Чтобы адрес открывался через HTTPS-соединение, подключите для адреса SSL-сертификат.
- Удалить адреса — активируйте опцию, чтобы удалить все адреса, которые прослушивают указанный порт.
Доступ к интерфейсу по доменному имени
Чтобы веб-интерфейс открывался по доменному имени, настройте:
- ihttpd;
- связку nginx + ihttpd.
Настройка ihttpd
Для доступа к веб-интерфейсу BILLmanager требуются порты 1500, 443, 80. Если на сервере с платформой запускаются сторонние приложения, настройте доступ к портам таким образом, чтобы они не пересекались с портами для BILLmanager.
Если на сервере не планируется запуск сторонних веб-приложений:
-
Измените порты веб-сервера на 80 и 443, например:
Файл конфигурации /usr/local/mgr5/etc/ihttpd.conflisten { ip <адрес> port 443 redirect } listen { ip <адрес> port 80 redirect }
ПояснениеПри такой настройке ihttpd будет принимать соединения на порты 80 и 443. При этом с порта 80 назначено перенаправление (редирект) на порт 443.
-
После изменения файла конфигурации перезапустите сервис:
service ihttpd restart
Настройка nginx + ihttpd
- Настройка Nginx:
-
Если Nginx не установлен, установите его:
Ubuntuapt-get install nginx
AlmaLinuxdnf install nginx
Откройте порты на AlmaLinux -
Добавьте в файл конфигурации nginx /etc/nginx/nginx.conf следующие строки:
Файл конфигурации /etc/nginx/nginx.confПоясненияForwardedSecret — в случае Nginx, это набор букв и цифр, которые представляют собой ключ. Данный ключ используется при проверке аутентификации по ограниченному списку IP-адресов. Требуется для защиты от несанкционированных попыток аутентификации.
Секретная фраза должна совпадать в файлах конфигурации:
- Nginx — директива proxy_set_header X-Forwarded-Secret;
- BILLmanager — директива ForwardedSecret;
- COREmanager — директива ForwardedSecret.
- Добавьте секретную фразу в файл конфигурации BILLmanager /usr/local/mgr5/etc/billmgr.conf в директиву ForwardedSecret.
- Добавьте секретную фразу в файл конфигурации COREmanager /usr/local/mgr5/etc/core.conf в директиву ForwardedSecret.
-
После редактирования конфигурационных файлов, перезапустите платформу:
/usr/local/mgr5/sbin/mgrctl -m billmgr exit
-
Перезапустите Nginx:
service nginx restart
-
- Настройка ihttpd. Чтобы избежать циклической переадресации:
- Удалите строку со значением "redirect" в файле конфигурации ihttpd /usr/local/mgr5/etc/ihttpd.conf.
-
Перезапустите сервис:
service ihttpd restart
SSL-сертификаты адресов
Вы можете добавить SSL-сертификаты для адресов или доменного имени (необходима поддержка Server Name Indication) платформы.
SSL-сертификаты для адресов платформы необходимы, чтобы можно было зайти в веб-интерфейс через протокол HTTPS по IP-адресу или доменному имени.
Чтобы управлять SSL-сертификатами в платформе, перейдите в раздел Настройки → Адреса панели → кнопка Сертификаты.
Добавить Let’s Encrypt сертификат
Let’s Encrypt — некоммерческий удостоверяющий центр, который предоставляет бесплатные сертификаты X.509 для TLS-шифрования. Шифрование осуществляется с помощью автоматизированного процесса. Создание, проверка, подпись, установка и обновление сертификата выполняются автоматически. Подробнее см. на официальном сайте сервиса Let’s Encrypt.
Основные ограничения Let’s Encrypt:
- можно заказать 50 сертификатов в неделю (домен верхнего уровня (TLD), включая его поддомены);
- срок действия Let’s Encrypt сертификата 3 месяца. Это означает, что каждые 3 месяца будет выполняться перевыпуск Let’s Encrypt сертификатов.
Существуют и другие ограничения. Подробнее в документации Let’s Encrypt.
Чтобы добавить сертификат, перейдите в раздел Настройки → Адреса панели → кнопка Сертификаты → кнопка Добавить:
- Тип сертификата — способ создания SSL-сертификата. Выберите "Let`s Encrypt сертификат".
- Доменное имя сертификата — укажите имена доменов в сертификате.
- IP-адрес — выберите адрес платформы, к которому будет привязан сертификат. В списке отображаются IP-адреса, которые настроены в разделе Адреса панели.
При заказе сертификата в директории /usr/local/mgr5/www/letsencrypt/.well-known/acme-challenge:
- Создаётся файл с токеном и данными для проверки. Сервис проверки Let’s Encrypt выполняет запрос по доменному имени и считывает этот токен.
-
После выдачи SSL-сертификата в планировщик добавляется задание, которое проверяет необходимость продления SSL-сертификата:
0 0 * * * "/usr/local/mgr5/etc/scripts/acmesh"/acme.sh --cron --home "/usr/local/mgr5/etc/scripts/acmesh" > /dev/null
При выпуске нескольких сертификатов для доменных имён третьего уровня и выше может возникнуть ошибка выпуска сертификата на большое количество поддоменов. Это ограничение Let’s Encrypt, выдача сертификатов будет продолжена спустя некоторое время (обычно в пределах суток).
Поддерживается работа совместно с веб-сервером Apache и Nginx. Если никакой веб-сервер не запущен, то запускается встроенный сервер, который будет принимать запросы от Let’s Encrypt во время проверки домена.
Добавить существующий сертификат
При добавлении существующего сертификата соответствие домена и IP-адреса не проверяется. В случае несоответствия доменного имени и IP-адреса такой сертификат в списке будет отмечен соответствующей пиктограммой.
Чтобы добавить сертификат, перейдите в раздел Настройки → Адреса панели → кнопка Сертификаты → кнопка Добавить:
- Тип сертификата — выберите "Существующий сертификат".
- Доменное имя сертификата — доменное имя, для которого будет выпущен SSL-сертификат. Поле недоступно для изменения, значение будет взято из сертификата.
- IP-адрес — выберите адрес платформы, к которому будет привязан SSL-сертификат. В списке отображаются IP-адреса, которые настроены в разделе Настройки → Адреса панели.
- SSL сертификат — укажите ваш SSL-сертификат.
- Ключ SSL сертификата — укажите ключ вашего SSL-сертификата.
- Цепочка SSL-сертификатов — укажите цепочку SSL-сертификатов, которая будет добавлена в файл сертификата.
Настроить сертификат для нескольких портов
Let's Encrypt выпускает сертификат только на домен, а не на порт. Если вам нужно для каждого порта указать отдельный домен, вы можете использовать для этого отдельные сертификаты.
Чтобы прописать сертификат на несколько портов:
-
Добавьте секции для нужных портов в конфигурационный файл /usr/local/mgr5/etc/ihttpd.conf:
listen { ip <IP-адрес> redirect sni { domain_cert etc/manager.crt domain_key etc/manager.key domains bill.domain.ru } } listen { ip <IP-адрес> port 443 redirect sni { domain_cert etc/manager.crt domain_key etc/manager.key domains bill.domain.ru } }
Пояснение -
Перезапустите ihttpd:
systemctl restart ihttpd
-
Перезапустите BILLmanager:
/usr/local/mgr5/sbin/mgrctl -m billmgr -R
Удалить сертификат адреса панели
Чтобы удалить SSL-сертификат, выберите его в списке и нажмите кнопку Удалить. Для доступа по IP-адресу будет использоваться самоподписанный сертификат по умолчанию.