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

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

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

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

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


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

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

    Обратите внимание!

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

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

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

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

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

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

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


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

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

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

Настройка 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 + 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;	
             rewrite ^(.*)$ https://$server_name$1 permanent; <!-- добавьте, чтобы веб-интерфейс платформы открывался через протокол https -->
             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-сертификаты адресов


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

Если операционная система поддерживает 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.

Перед добавлением сертификата 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 во время проверки домена.

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

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

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

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

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

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

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

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