Статья описывает настройку адресов, по которым будет доступен веб-интерфейс платформы. Вы можете выполнить настройки через веб-интерфейс BILLmanager или через изменение файлов конфигурации. Настройки, выполненные в веб-интерфейсе, добавляются в файл конфигурации сервиса ihttpd — /usr/local/mgr5/etc/ihttpd.conf.

По умолчанию платформа работает через встроенный веб-сервер — ihttpd. Веб-интерфейс доступен по следующему адресу:

URL web-интерфейса. Порт 1500

https://<IP-адрес_сервера>:1500/billmgr
TEXT

Добавление нового адресаLink to Добавление нового адреса


Чтобы добавить новый адрес, перейдите в раздел НастройкиАдреса панели → кнопка Создать. Заполните форму:

  1. IP-адрес — выберите IP-адрес, который будет использоваться для приёма входящих соединений.
  2. Порт — укажите номер порта, который будет использован для приёма входящих соединений. Если оставить это поле пустым, будет использован порт по умолчанию — 1500.

    При изменении порта BILLmanager может стать недоступным. Перед изменением откройте в правилах брандмауэра ОС порт, который нужно назначить платформе.

  3. Запретить HTTP соединения — включите опцию, чтобы перенаправлять все запросы на HTTPS. С выключенной опцией встроенный веб-сервер может принимать запросы как по HTTP, так и по HTTPS-протоколам.

    • 80 порт используется по умолчанию в протоколе HTTP.
    • 443 порт используется по умолчанию в протоколе HTTPS.

      Не включайте опцию Запретить HTTP соединения в настройках адреса с 80 и 443 портами одновременно.

      Чтобы адрес открывался через HTTPS-соединение, подключите для адреса SSL-сертификат.

  4. Удалить адреса — активируйте опцию, чтобы удалить все адреса, которые прослушивают указанный порт.

Доступ к интерфейсу по доменному имениLink to Доступ к интерфейсу по доменному имени


Чтобы веб-интерфейс открывался по доменному имени, настройте:

  • ihttpd;
  • связку nginx + ihttpd.

Чтобы переходить к веб-интерфейсу по домену, установите соответствие между доменным именем и IP-адресом платформы через А-запись.

Настройка ihttpdLink to Настройка ihttpd

Для доступа к веб-интерфейсу BILLmanager требуются порты 1500, 443, 80. Если на сервере с платформой запускаются сторонние приложения, настройте доступ к портам таким образом, чтобы они не пересекались с портами для BILLmanager.

Если на сервере не планируется запуск сторонних веб-приложений:

  1. Измените порты веб-сервера на 80 и 443, например:

    Файл конфигурации /usr/local/mgr5/etc/ihttpd.conf

    listen {
    		ip <адрес>
    		port 443
    		redirect
    }       
    listen {
           ip <адрес>
           port 80
           redirect
    }
    CODE

    <адрес> — публичный IP-адрес сервера

    При такой настройке ihttpd будет принимать соединения на порты 80 и 443. При этом с порта 80 назначено перенаправление (редирект) на порт 443.

  2. После изменения файла конфигурации перезапустите сервис:

    service ihttpd restart
    CODE

Настройка nginx + ihttpdLink to Настройка nginx + ihttpd

  1. Настройка Nginx:
    1.  Если Nginx не установлен, установите его:

      Ubuntu

      apt-get install nginx 
      CODE

      AlmaLinux

      dnf install nginx
      CODE

      AlmaLinux

      firewall-cmd --zone=public --permanent --add-port=80/tcp
      firewall-cmd --zone=public --permanent --add-port=443/tcp
      CODE
    2. Добавьте в файл конфигурации nginx /etc/nginx/nginx.conf следующие строки:

      Файл конфигурации nginx

      server {	
      
             listen 10.10.10.10:443 ssl;
             server_name my.domain.com;
             ssl_certificate /usr/local/mgr5/etc/manager.crt;	
             ssl_certificate_key /usr/local/mgr5/etc/manager.key; 	
       
             set $mgr_proxy "https://10.10.10.10:1500";         
               
             location ^~ /manimg/ { 		
                    alias /usr/local/mgr5/skins/; 	
             } 	
             
             location / { 		
                      proxy_pass $mgr_proxy; 		
                      proxy_redirect $mgr_proxy /; 		
                      proxy_set_header Host $host:$server_port; 		
                      proxy_set_header X-Forwarded-For $remote_addr; 		
                      proxy_set_header X-Forwarded-Proto $scheme; 		
                      proxy_set_header X-Real-IP $remote_addr;                
                      proxy_set_header X-Forwarded-Secret mary123;  		
                      chunked_transfer_encoding off; 
       	}
      
       	location ^~ /mancgi/ {
      	        proxy_pass $mgr_proxy;
      	        proxy_redirect $mgr_proxy /;
      	        proxy_set_header Host $host:$server_port;
      	        proxy_set_header X-Forwarded-For $remote_addr; 
                      proxy_set_header X-Forwarded-Proto $scheme;
      	        proxy_set_header X-Real-IP $remote_addr;
      	        proxy_set_header X-Forwarded-Secret mary123; <!-- секретная фраза ForwardedSecret -->
                  chunked_transfer_encoding off;
      	}
      }
      CODE

      my.domain.com — доменное имя, используемое в рамках примера. Вместо него вставьте приобретённый домен

      ForwardedSecret — в случае Nginx, это набор букв и цифр, которые представляют собой ключ. Данный ключ используется при проверке аутентификации по ограниченному списку IP-адресов. Требуется для защиты от несанкционированных попыток аутентификации.

      Секретная фраза должна совпадать в файлах конфигурации:

      • Nginx — директива proxy_set_header X-Forwarded-Secret;
      • BILLmanager — директива ForwardedSecret;
      • COREmanager — директива ForwardedSecret.
    3. Добавьте секретную фразу в файл конфигурации BILLmanager /usr/local/mgr5/etc/billmgr.conf в директиву ForwardedSecret.
    4. Добавьте секретную фразу в файл конфигурации COREmanager /usr/local/mgr5/etc/core.conf в директиву ForwardedSecret.
    5. После редактирования конфигурационных файлов, перезапустите платформу:

      /usr/local/mgr5/sbin/mgrctl -m billmgr exit
      XML
    6. Перезапустите Nginx:

      service nginx restart
      CODE
  2. Настройка ihttpd. Чтобы избежать циклической переадресации:
    1. Удалите строку со значением "redirect" в файле конфигурации ihttpd /usr/local/mgr5/etc/ihttpd.conf.
    2. Перезапустите сервис:

      service ihttpd restart
      CODE

SSL-сертификаты адресовLink to SSL-сертификаты адресов


Вы можете добавить SSL-сертификаты для адресов или доменного имени (необходима поддержка Server Name Indication) платформы.

Если операционная система поддерживает Server Name Indication, существует возможность создать несколько сертификатов на различные доменные имена. При обращении к платформе по доменному имени будет использоваться сертификат, соответствующий этому доменному имени.

Поддерживаются сертификаты с альтернативными доменными именами.

SSL-сертификаты для адресов платформы необходимы, чтобы можно было зайти в веб-интерфейс через протокол HTTPS по IP-адресу или доменному имени.

Чтобы управлять SSL-сертификатами в платформе, перейдите в раздел НастройкиАдреса панели → кнопка Сертификаты.

Добавить Let’s Encrypt сертификатLink to Добавить 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.

Перед добавлением сертификата Let’s Encrypt убедитесь, что доменное имя ведёт на существующий IP-адрес платформы. При добавлении сертификата Let’s Encrypt будет выполнена проверка, что вы являетесь владельцем домена.

Чтобы добавить сертификат, перейдите в раздел НастройкиАдреса панели → кнопка Сертификаты → кнопка Добавить:

  1. Тип сертификата — способ создания SSL-сертификата. Выберите "Let`s Encrypt сертификат".
  2. Доменное имя сертификата — укажите имена доменов в сертификате.
  3. IP-адрес — выберите адрес платформы, к которому будет привязан сертификат. В списке отображаются IP-адреса, которые настроены в разделе Адреса панели.

При заказе сертификата в директории /usr/local/mgr5/www/letsencrypt/.well-known/acme-challenge:

  1. Создаётся файл с токеном и данными для проверки. Сервис проверки Let’s Encrypt выполняет запрос по доменному имени и считывает этот токен.
  2. После выдачи SSL-сертификата в планировщик добавляется задание, которое проверяет необходимость продления SSL-сертификата:

    0 0 * * * "/usr/local/mgr5/etc/scripts/acmesh"/acme.sh --cron --home "/usr/local/mgr5/etc/scripts/acmesh" > /dev/null
    CODE

При выпуске нескольких сертификатов для доменных имён третьего уровня и выше может возникнуть ошибка выпуска сертификата на большое количество поддоменов. Это ограничение Let’s Encrypt, выдача сертификатов будет продолжена спустя некоторое время (обычно в пределах суток).

Поддерживается работа совместно с веб-сервером Apache и Nginx. Если никакой веб-сервер не запущен, то запускается встроенный сервер, который будет принимать запросы от Let’s Encrypt во время проверки домена.

Добавить существующий сертификатLink to Добавить существующий сертификат

При добавлении существующего сертификата соответствие домена и IP-адреса не проверяется. В случае несоответствия доменного имени и IP-адреса такой сертификат в списке будет отмечен соответствующей пиктограммой.

Чтобы добавить сертификат, перейдите в раздел НастройкиАдреса панели → кнопка Сертификаты → кнопка Добавить:

  1. Тип сертификата — выберите "Существующий сертификат".
  2. Доменное имя сертификата — доменное имя, для которого будет выпущен SSL-сертификат. Поле недоступно для изменения, значение будет взято из сертификата.
  3. IP-адрес — выберите адрес платформы, к которому будет привязан SSL-сертификат. В списке отображаются IP-адреса, которые настроены в разделе НастройкиАдреса панели.
  4. SSL сертификат — укажите ваш SSL-сертификат.
  5. Ключ SSL сертификата — укажите ключ вашего SSL-сертификата.
  6. Цепочка SSL-сертификатов — укажите цепочку SSL-сертификатов, которая будет добавлена в файл сертификата.

Настроить сертификат для нескольких портовLink to Настроить сертификат для нескольких портов

Let's Encrypt выпускает сертификат только на домен, а не на порт. Если вам нужно для каждого порта указать отдельный домен, вы можете использовать для этого отдельные сертификаты.

Чтобы прописать сертификат на несколько портов:

  1. Добавьте секции для нужных портов в конфигурационный файл /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
            }        
    }
    CODE
    • <IP-адрес> — публичный IP-адрес сервера
    • domain_cert etc/manager.crt — путь до цепочки сертификата
    • domain_key etc/manager.key — путь до ключа сертификата
    • bill.domain.ru — ваш домен BILLmanager
  2. Перезапустите ihttpd:

    systemctl restart ihttpd
    CODE
  3. Перезапустите BILLmanager:

    /usr/local/mgr5/sbin/mgrctl -m billmgr -R
    CODE

Удалить сертификат адреса панелиLink to Удалить сертификат адреса панели

Чтобы удалить SSL-сертификат, выберите его в списке и нажмите кнопку Удалить. Для доступа по IP-адресу будет использоваться самоподписанный сертификат по умолчанию.