Опасно
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
user@mail.com — ваша почта
Получение сертификата:
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
.