# Компонент для протокола HTTPS
# Описание компонента
После установки компонента в ОС автоматически появится соответствующая служба:
на ОС Windows с названием TrueConf Border Controller htpps и id tc_bchttps, путь к исполняемому файлу
C:\Program Files\TrueConf\Border Controller\tc_bchttps.exe
на ОС Linux: trueconf-bchttps, путь к исполняемому файлу
/opt/trueconf/border-controller/bin/tc_bchttps
Настройки для работы компонента для протокола HTTPS указываются в файле конфигурации webproxy.toml
как показано далее.
Запуск компонента настраивается так же, как и для рассмотренного ранее компонента для трафика Труконф, но с рядом отличий:
надо предварительно настроить работу с сертификатами;
параметры работы настраиваются в конфигурационном файле webproxy.toml;
параметры логирования используются те, что заданы в файле
tc_bc.cfg
при конфигурировании компонента для протокола TrueConf.
# Настройка сертификатов
Шаг 1
Если на стороне TrueConf Server настроен самоподписанный сертификат, то скачайте его (по ссылке Скачать ca.crt в блоке Самоподписанный сертификат) и добавьте его в доверенные корневые сертификаты на машине с TrueConf Border Controller. Как это сделать, читайте в документации к вашей ОС.
Также можно просто указать параметр skip_verify = true
(см. ниже), но это рекомендуем делать только в целях временного тестирования.
Например, на ОС Debian:
- скопируйте файл сертификата в хранилище сертификатов в каталог
usr/local/share/ca-certificates/
:
sudo cp ca.crt /usr/local/share/ca-certificates/
- обновите хранилище сертификатов командой:
sudo update-ca-certificates -v
Если вы получите ошибку что команда не найдена, то установите пакет из репозитория командой:
sudo apt install -y ca-certificates
- для проверки, что ваша ОС доверяет сертификату, выполните:
openssl verify /usr/local/share/ca-certificates/ca.crt
Шаг 2
На ОС Linux после копирования файлов сертификатов убедитесь, что у них владелец trueconf-border-controller
(иначе не будет корректно запускаться служба TrueConf Border Controller). Для проверки выполните команду:
ls -l /usr/local/share/ca-certificates/ca.crt
В выводе должно быть trueconf-border-controller trueconf-border-controller
во 2 и 3 столбцах. Если это не так, то выполните команду:
sudo chown trueconf-border-controller:trueconf-border-controller /usr/local/share/ca-certificates/ca.crt
Шаг 3
В панели управления TrueConf Server перейдите в раздел Веб → Настройки и в поле Внешний адрес веб страницы TrueConf Server укажите адрес машины с TrueConf Border Controller.
Шаг 4
Создайте сертификат для машины с TrueConf Border Controller. Если нет коммерческого, можно создать самоподписанный как показано в нашей базе знаний.
Шаг 5
Полученные на шаге 3 сертификат и ключ скопируйте в каталог <path_to_border_controller>\etc\crt\
, где <path_to_border_controller>
— путь к исполняемому файлу компонента на вашей ОС.
Шаг 6
Сгенерируйте один 128-битный идентификатор GUID, например, с помощью онлайн-сервиса UUID Generator (opens new window).
Переименуйте файлы сертификата и ключа в виде <guid>.crt
и <guid>.key
где <guid>
— полученный выше GUID.
# Настройка файла конфигурации
При установке компонента будет создан файл конфигурации webproxy.toml
:
на ОС Windows:
C:\Program Files\TrueConf\Border Controller\etc\webproxy.toml
на ОС Linux:
/opt/trueconf/border-controller/etc/webproxy.toml
Файл конфигурации по-умолчанию содержит такие строки:
## [certificate]
## cert_extension = '.crt'
## key_extension = '.key'
[dir]
executable_relative = false
installation = '/opt/trueconf/border-controller'
logs = '/opt/trueconf/border-controller/var/log'
[file]
configname = 'webproxy'
[interfaces]
[interfaces.list]
[interfaces.list.0]
Address = 'localhost:443'
EnableTLS = false
ReadTimeout = 0
## HostWhitelist = []
## HostHeaders = ['Host']
## TLSConfigID = ''
## TargetID = '2f0dbf86-8378-41fc-9c5a-89a43728a0b7'
## [interfaces.list.1]
## Address = '[::]:443'
## EnableTLS = true
## ReadTimeout = 0
## HostWhitelist = []
## HostHeaders = ['Host']
## TLSConfigID = 'd25ceb20-f473-41dc-8db9-37f4dec1a3d1'
## TargetID = 'a824b5cb-c92d-4a52-a5cc-434fecaba6a8'
[proxy]
trust_client_headers = false
## [targets]
## [targets.list]
## [targets.list.2f0dbf86-8378-41fc-9c5a-89a43728a0b7]
## address = 'example.org:80'
## is_secure = false
## [targets.list.a824b5cb-c92d-4a52-a5cc-434fecaba6a8]
## address = 'example.org:443'
## is_secure = true
## skip_verify = true
## [tls]
## [tls.list]
## [tls.list.d25ceb20-f473-41dc-8db9-37f4dec1a3d1]
## CertificateID = 'd25ceb20-f473-41dc-8db9-37f4dec1a3d1'
## CertificateType = 'user-provided'
## DisplayName = 'My TLS configuration'
## ID = 'd25ceb20-f473-41dc-8db9-37f4dec1a3d1'
Для настройки работы компонента для протокола HTTPS укажите следующие значения:
в разделе
[dir]
:installation
— путь к исполняемому файлу компонента;
в блоках раздела
[interfaces]
описываются внешние сетевые интерфейсы, на которые приходят новые подключения. Должны содержать уникальный номер (0, 1 и т.д.) в строке[interfaces.list.NUMBER]
, например[interfaces.list.0]
. Параметры, которые могут быть в каждом блоке:Address
— адрес и порт для каждого интерфейса в видеaddress:port
, если адреса нет то слушаются все интерфейсы по данному порту (порт обязателен). Префикс (схему), то естьhttps://
илиhttp://
в адресе указывать не надо;TLSConfigID
— имя файлов сертификата и ключа, полученное на шаге 5;TargetID
— GUID для идентификации блока настроек HTTPS из раздела[targets]
;EnableTLS
— следует ли использовать TLS для принимаемых подключений, если порт 443 то ставимtrue
;HostHeaders
— HTTP-заголовки, из которых TrueConf Border Controller читает адрес, к которому идёт попытка подключения; значение по умолчаниюHost
. Если список пуст, то всё равно берётсяHost
. Можно добавить другие заголовки специфичные для окружения, напримерX-Forwarded-Host
илиX-Forwarded-Server
. Если указано несколько заголовков, то TrueConf Border Controller будет искать в полученном HTTP-запросе каждый из них от первого к последнему и ориентироваться на первый найденный. Из значения отсекается host/port, полученная строка ищется в списке из пунктаHostWhitelist
;HostWhitelist
— список доверенных адресов TrueConf Border Controller, то есть запросы только к таким адресам будут обрабатываться. Запросы на другие адреса будут сразу отбрасываться. Например, если тут указатьsome.example.com
то при вводе в браузере других адресов запросы не пройдёт через TrueConf Border Controller. Если список пуст то допустим проброс пакетов по всем веб-адресам.
[interfaces.list.1]
и [interfaces.list.0]
могут быть поменяны местами, это не важно. Суть в том что если веб-порт один, то указывается только один блок [interfaces.list.0]
или [interfaces.list.1]
, иначе два блока с разными числами.
в разделе
[proxy]
указываются общие настройки проксирования:trust_client_headers
— указывает, следует ли доверять входящим заголовкам, надо указатьfalse
если требуется настроить проброс реальных адресов через TrueConf Border Controller в сторону TrueConf Server;X-Forwarded-For
— еслиfalse
, то значение в полученных пакетах HTTP-заголовковX-Forwarded-For
будет проигнорировано, а цепочка предшествующих прокси-серверов будет утеряна.
для каждого из блоков
[targets.list.<guid>]
в разделе[targets]
:сгенерируйте уникальные GUID и добавьте их в названиях вместо
<guid>
(эти GUID будут использоваться для связи каждого блока[targets.list.<guid>]
с соответствующими параметрами из[interfaces.list.0]
);address
— IP-адрес или FQDN TrueConf Server и порт для передачи трафика от компонента;is_secure
— если для параметраaddress
текущего блока[targets.list.<guid>]
был указан HTTPS порт, то значениеtrue
, иначеfalse
;skip_verify
— указывает, следует ли продолжать работу с недоверенными сертификатами (TLS) в случае настройки для HTTPS;allow_access_by_host
— если требуется перенаправлять трафик на сервер видеосвязи по FQDN а не по IP, то надо указать значениеtrue
, если же по IP тоfalse
;host
— если указано значениеallow_access_by_host = true
то тут требуется указать доменное имя для перенаправления, которое уже будет резолвиться в нужный IP в соответствии с настройками сети.
в разделе
[tls]
:для названия блока
[tls.list.<guid>]
замените<guid>
на значениеTLSConfigID
(оно же название файла сертификата из шага 5);CertificateID
иID
— значениеTLSConfigID
.
7. Сохраните файл webproxy.toml
и запустите компонент.
# Проброс реальных адресов
В общем случае при прохождении веб-трафика через TrueConf Border Controller на его стороне перезаписываются заголовки X-Forwarded-For
в целях безопасности. В итоге сервер видеосвязи не знает реальный адрес отправителя запроса. Это может быть неудобно если в зависимости от адреса настроены какие-то параметры, например доступ к панели управления или способы аутентификации пользователей в приложении.
В таких случаях можно убрать перезапись заголовка:
- На машине с TrueConf Server откройте файл:
на ОС Linux:
/opt/trueconf/server/etc/webmanager/extra/httpd-remoteip.conf
на ОС Windows:
C:\Program Files\TrueConf Server\httpconf\conf\extra\httpd-remoteip.conf
2. Добавьте строку RemoteIPTrustedProxy
с адресом машины с TrueConf Border Controller.
3. На стороне TrueConf Border Controller в файле webproxy.toml
укажите значение параметра trust_client_headers = false
.
В случае, если перед TrueConf Border Controller есть ещё какие-то прокси, нужно переложить ответственность по удалению клиентского заголовка на них, а на TrueConf Border Controller включить trust_client_headers
.
# Запуск компонента на ОС Windows
Как и компонент для протокола Труконф запуск службы на Windows можно произвести из оснастки services.msc
либо из терминала с помощью утилиты sc.exe
. Например:
sc start tc_bchttps
Аналогичным образом компонент добавляется в автозапуск, например:
sc config tc_bchttps start=auto
# Запуск компонента на ОС Linux
Для управления компонентом используйте утилиту systemctl
как было показано для trueconf-bc. Например, для запуска выполните:
sudo systemctl start trueconf-bchttps