14 марта 2021 г.

Устанавливаем собственный Let.s Encrypt сертификат на сервер вещания WOWZA

 Дано:

Цель: вещание видео по защищенном каналу.

Задачи: 

  1. выпустить сертификат для домена cam.my_domen.ru (имя используется в дальнейшем для примера, заменяете на свое);
  2. импорт сертификата в Wowza;
  3. прописать свой домен для вещания;
  4. протестировать работу вещания.
Необходимость в выпуске собственного сертификата появилась после того как закончилась платная поддержка Wowza, а в дальнейшем финансировании отказали. Поэтому для выпуска сертификата будем использовать сервис Let.s Encrypt. И соответственно автоматизировать выпуск сертификата и его импорт в Wowza.

Жмем...

Часть 1

Нам нужен домен. Дальше прописываем в DNS записи IP адрес нашего сервера Wowza. Ждем, когда обновятся DNS записи на серверах в интернете, а потом уже приступаем к следующему шагу.

Часть 2

Устанавливаем certbot:
sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot
Certbot использует для подтверждения собственный http сервер в наше случае.
Проверяем, что у нас свободен 80 порт. Команда должна вернуть ничего:
sudo lsof -i :80
Дальше проверяем переадресацию порта 80:
sudo iptables-save | grep PREROUTING
:PREROUTING ACCEPT 
-A PREROUTING -p tcp -m tcp --dport 81 -j REDIRECT --to-ports 1935
Я менял переадресацию. Было 80 на 1935. Я сделал временно 81 на 1935. На всякий случай. Но можно просто отключить это правило. Ни чего не должно сломаться. Так же не забываем добавить 80 порт в доступ на фаерволе.
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Теперь запрашиваем сертификат:
sudo certbot certonly --standalone -d cam.my_domen.ru 
Если все было сделано правильно, тогда вам вернется ответ:
- Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/cam.my_domen.ru/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/cam.my_domen.ru/privkey.pem
   Your cert will expire on 2021-06-10. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
Переходим к следующей части.

Часть 3

Wowza использует формат .jks для хранения сертификатов. Поэтому нам надо сделать конвертацию сертификата.
Скачиваем утилиту для этого дела и запускаем ее:
cd /usr/local/WowzaStreamingEngine/conf
wget https://github.com/robymus/wowza-letsencrypt-converter/releases/download/v0.1/wowza-letsencrypt-converter-0.1.jar
sudo java -jar wowza-letsencrypt-converter-0.1.jar -v /usr/local/WowzaStreamingEngine/conf/ /etc/letsencrypt/live/
В данном варианте используется версия 0.1, но можно использовать и 0.2 версию в случае необходимости.

Часть 4

Теперь нам надо указать место хранения сертификата. Это можно сделать в конфигурационном файле /usr/local/WowzaStreamingEngine/conf/VHost.xml или через веб-менеджер.

Вариант 1. 
В конфигурационном файле надо найти строчки и указать место хранение файла jks и ключ.
<SSLConfig>
<KeyStorePath>/usr/local/WowzaStreamingEngine/conf/cam.my_domen.ru.jks</KeyStorePath>
<KeyStorePassword>secret</KeyStorePassword>
</SSLConfig>
Программа Wowza Let's Encrypt Converter по умолчанию делает ключ secret.
И перезагрузить сервер:
service WowzaStreamingEngineManager restart
service WowzaStreamingEngine restart
Вариант 2.
Открываем в браузере Wowza Streaming Engine Manager по адресу: http://ваш_ип_или_домен:8088. Идем в настройки: "Server" → "Virtual Host Setup". Жмем "Edit".
Wowza Streaming Engine Manager

Дальше жмем на карандаш для внесения изменений в StreamLock.
Virtual Host Setup

Вносим в поле Keystore Path путь до нашего сертификата и в Keystore Password пароль от сертификата. В нашем случае это /usr/local/WowzaStreamingEngine/conf/cam.my_domen.ru.jks и secret соответственно.
StreamLock

После внесения изменений принимаем настройки кнопкой "Apply" и сохраняем настройки кнопкой "Save". И перезапускаем сервисы Wowza кнопкой "Restart".
Wowza Restart

Теперь можно проверять работу видеопотока.

Часть 5

Теперь надо автоматизировать выпуск сертификата и его подмену.
Я это до сих пор не сделал, в ручную делаю и тестирую команды из скрипта, чтобы получать в будущем 100% результат.

Используемые материалы:

Комментариев нет:

Отправить комментарий