Опасно

TVIP TMS Pro требует наличия и использования действительных SSL сертификатов, как для TMS, так и для видео серверов

Конфигурация фронтенда TVIP TMS

Стандартная поставка tvip-tms-standalone использует nginx в качестве фронтенд сервера.

  • файл /etc/nginx/sites-enabled/tvip-tms-bundle.conf - файл виртуального сервера nginx, требует редактирования только для Pro версий и при требовании использовать SSL соединения.

  • файл /etc/nginx/tvip/tvip-tms-upstreams.conf - конфигурационный файл tvip-tms, редактирование запрещено, будет перезаписан пакетом tvip-tms-standalone

  • файл /etc/nginx/tvip/tvip-tms-locations.conf - конфигурационный файл tvip-tms, редактирование запрещено, будет перезаписан пакетом tvip-tms-standalone

Конфигурация виртуального сервера содержит две директивы include, которые внедряют конфигурацию для использования TVIP TMS, определяя поведение виртуального сервера при обращении на те или иные локации. Вся логика построена на проксировании запросов тем или иным микросервисам.

Опасно

Файлы tvip-tms-upstreams.conf и tvip-tms-locations.conf могут обновляться установщиком, их редактирование может привести к неработоспособности системы.

Ниже описаны конечные точки подключения внешних систем:

Веб интерфейсы

  • Веб-интерфейс администратора доступен по адресу: http://tms.example.com/admin, использует приватный Admin API.

  • Веб-интерфейс провайдера доступен по адресу: http://tms.example.com/provider, использует публичный Provider API.

  • Веб-интерфейс клиентского веб-приложения для ПК доступен по адресу: https://tms.example.com/web-player/, использует публичный TVIP API, использование без SSL сертификата невозможно.

Публичные API:

  • Provider API расположено по адресу http://tms.example.com/api/provider, используется Веб интерфейсом провайдера, предназначен в первую очередь для интеграции с Биллингом оператора услуги.

  • Stat API расположено по адресу http://tms.example.com/api/stats, может использоваться биллингом, ПО для анализа и прочими инструментами для сбора и анализа статистики.

  • TVIP API доступно по адресу http://tms.example.com/tvipapi, используется всеми клиентскими устройствами.

Встроенная документация для публичных API:

  • Документация по Provider API расположена по адресу http://tms.example.com/provider/swagger-ui.html.

  • Документация по Stat API расположена по адресу http://tms.example.com/api/stats/swagger-ui/index.html.

Настройка SSL в nginx

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

include /etc/nginx/tvip/tvip-tms-upstreams.conf;

log_format  log-tms-main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_id" ';

server {
  listen       80;
  server_name  localhost;

  # SSL configuration
  #
  listen 443 ssl default_server;

  ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
  ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

  error_log  /var/log/nginx/tvip-tms.error.log warn;
  access_log  /var/log/nginx/tvip-tms.access.log  log-tms-main;

  proxy_headers_hash_max_size 1024;
  proxy_headers_hash_bucket_size 128;

  include /etc/nginx/tvip/tvip-tms-locations.conf;
}

Использование коммерческих сертификатов

Набор сертификатов состоит из корневого сертификата, промежуточного сертификата и сертификата для домена. Если ваш провайдер SSL предоставил файл bundle.crt, вы можете сразу переходить к настройке nginx. В противном случае вам нужно будет объединить в один файл три типа сертификата.

Создание bundle.crt

У вас должно быть три файла: root.crt (корневой сертификат), intermediate.crt (промежуточный сертификат) и your_domain.crt, скопируйте их вместе с файлом .key в произвольный каталог на своем сервере, в котором вы хотите их хранить.

Объединение файлов сертификатов в один crt-файл делается с помощью следующей команды:

cat root.crt intermediate.crt your_domain.crt > bundle.crt

В некоторых случаях Сертификационные центры присылают архив, в котором файлы промежуточного сертификата и корневого сертификата уже объединены в один файл. Если так, то вам нужно будет объединить его с файлом сертификата при помощи следующей команды:

cat bundle.crt your_domain.crt > bundle.crt

После этого вам нужно загрузить сертификаты на сервер и изменить пути в конфигурационном файле nginx.

ssl_certificate /etc/ssl/bundle.crt;
ssl_certificate_key /etc/ssl/your_domain.key

Теперь можно проверить правильность конфигурации nginx командой

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если все верно, то перезапустите nginx командой:

nginx -s reload

Использование сервиса Let’s encrypt

Установка Certbot

apt install certbot python3-certbot-nginx

Настройка и регистрация в Certbot

certbot register --agree-tos -m name@domain.com
  • «name@domain.com» - адрес вашей электронной почты

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n

Получение сертификата Let’s Encrypt

certbot --nginx -d tms.example.com
  • «tms.example.com» - адрес вашего домена

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for tms.examle.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/tvip-tms-bundle.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

На вопрос мастера, вводим ответ: 2 ( Redirect)

Проверка:

Проверить, что сервис по обновлению certbot запущен

systemctl status certbot.timer

Использование сервиса ZeroSSL

Для получения сертификата вам потребуется установить утилиту acme.sh

Выполняем команду установки:

curl https://get.acme.sh | sh

Регистрируем аккаунт на ZeroSSL:

acme.sh --issue --nginx -m user@mail.com -d  --server zerossl

Получение сертификата:

acme.sh --issue --nginx -m user@mail.com -d tms.example.com --server zerossl
-----END CERTIFICATE-----
[Thu Mar 16 12:50:32 UTC 2023] Your cert is in: /root/.acme.sh/tms.example.com_ecc/tms.example.com.cer
[Thu Mar 16 12:50:32 UTC 2023] Your cert key is in: /root/.acme.sh/tms.example.com_ecc/tms.example.com.key
[Thu Mar 16 12:50:32 UTC 2023] The intermediate CA cert is in: /root/.acme.sh/vj.test.jettv.org_ecc/ca.cer
[Thu Mar 16 12:50:32 UTC 2023] And the full chain certs is there: /root/.acme.sh/tms.example.com_ecc/fullchain.cer
  • –nginx — тип веб сервера

  • tms.example.com — доменное имя для которого получаем сертификат

Скопируйте полученные сертификаты, не используйте файлы сертификатов в папке ~/.acme.sh/, они предназначены только для внутреннего использования, структура папок может измениться в будущем.

acme.sh --install-cert -d tms.example.com --key-file /etc/ssl/tms.example.com.key  --fullchain-file /etc/ssl/fullchain.cer --reloadcmd     "service nginx force-reload"
[Thu Mar 16 13:37:14 UTC 2023] The domain 'tms.example.com' seems to have a ECC cert already, lets use ecc cert.
[Thu Mar 16 13:37:14 UTC 2023] Installing key to: /etc/ssl/tms.example.com.key
[Thu Mar 16 13:37:14 UTC 2023] Installing full chain to: /etc/ssl/fullchain.cer
[Thu Mar 16 13:37:14 UTC 2023] Run reload cmd: service nginx force-reload
[Thu Mar 16 13:37:14 UTC 2023] Reload success

Пожалуйста, будьте осторожны: команда reloadcmd очень важна. Сертификат может быть автоматически обновлен, но без правильного reloadcmd SSL сертификат не будет обновлен через 60 дней.

После этого укажите пути к сертификатам в настройках nginx:

server_name         tms.example.com;
ssl_certificate     /etc/ssl/fullchain.cer;
ssl_certificate_key /etc/ssl/tms.example.com.key;

Теперь можно проверить правильность конфигурации nginx командой:

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если все верно, то перезапустите nginx командой:

nginx -s reload

Теперь ваш сервер TMS доступен по адресу https://tms.examle.com.