Постановка задачи.
Аудиотрансляция из локальной сети организации осуществляется через сайт с установленным бесплатным SSL-сертификатом от Let`s Encrypt. Однако при посещении страницы сайта в интернет-браузере появляется предупреждение о наличии смешанного контента, поскольку трансляция осуществляется по незащищенному протоколу http. Смешанный контент необходимо исключить.
Для этого было решено организовать аудиотрансляцию по защищенному протоколу https с использованием Icecast2 и IceS2. Результатом долгих поисков решения этой проблемы стала установка сервера Icecast2 с поддержкой SSL с использованием бесплатного сертификата от Let`s Encrypt. Несмотря на то, что разработчики сервера Icecast2 заявляют о поддержке SSL, компилировать сервер необходимо из исходного кода.
Здесь Описана процедура компиляции и установки сервера Icecast2 с использованием сертификата OpenSSL. Однако на данный момент браузеры жалуются на сертификаты, созданные с помощью openssl. Поэтому вместо сертификата OpenSSL мы используем бесплатный сертификат от Let`s Encrypt, сгенерированный для доменного имени, привязанного к внешнему IP-адресу, с которого осуществляется трансляция сети.
Все описанные ниже операции выполнялись на дистрибутиве Linux Mint. Итак, сначала обновляем систему и устанавливаем Icecast2 самым обычным способом, чтобы сразу его удалить.
Это необходимо для того, чтобы вам было проще настроить сервер Icecast2. Удалить Icecast2:
Убедитесь, что в системе присутствуют файлы конфигурации Icecast2 (необязательно):sudo apt remove icecast2
ls -l /etc/init.d/ /etc/ | grep icecast
Установите инструменты для сборки Icecast2 из исходников:
sudo apt install git gcc build-essential automake autoconf libtool checkinstall
Удовлетворяем зависимости для последующей компиляции сервера Icecast2:
sudo apt install libcurl4-openssl-dev libxslt1-dev libxml2-dev libogg-dev libvorbis-dev libflac-dev libtheora-dev libssl-dev libspeex-dev
Создаем каталог для хранения временных исходных файлов:
mkdir src
cd src
Давайте клонируем последнюю версию Icecast2:
git clone --recursive https://git.xiph.org/icecast-server.git
Создайте скрипт конфигурации:
cd icecast-server; .
/autogen.sh
Настраиваем исходный код для поддержки SSL:
.
/configure --with-curl --with-openssl
Убедитесь, что в конфигурации присутствует поддержка SSL (наличие lssl):
grep lssl config.status
Компиляция:
make
Установите Icecast2:
sudo checkinstall
При выполнении команды утилита checkinstall попросит нас добавить описание пакета.
Также обязательно укажите версию пакета, иначе команда выдаст ошибку «версия пакета не начинается с цифры».
Далее создайте файлы access.log и error.log (если в системе уже установлен Icecast2, то можно использовать существующие): sudo mkdir /var/log/icecast2
cd /var/log/icecast2
sudo touch access.log
sudo touch error.log
Размещаем SSL-сертификат от Let`s Encrypt, переименованный в Icecast.pem, в одну директорию с файлами access.log и error.log и указываем права на директорию и файлы в ней: sudo chown -R icecast2:icecast /var/log/icecast2
cd /var/log/icecast2
sudo chmod -R 777 *
Редактируем файл Icecast.xml из каталога /usr/local/etc/ (возможно, можно использовать существующий файл), исправляя пути к каталогам с файлами access.log и error.log, а также файлом Icecast. сертификат пэм.
(Для создания последнего необходимо скопировать содержимое файлов fullchain.pem и privkey.pem из каталога /etc/letsencrypt/live/domain_name, открыв их текстовым редактором, в один файл и сохранить его под именем Icecast.pem.) Необходимо убедиться, что в файле Icecast.xml есть два порта: один для http-соединения (8000), другой для безопасного https-соединения (8443).
Строки, указывающие путь к SSL-сертификату и порт https, необходимо раскомментировать.
В файле может быть tls вместо ssl — разницы я не увидел.
Следует уточнить, что через http-порт 8000 происходит соединение с IceS2 или аналогичным приложением, которое считывает аудиоданные и передает их на сервер Icecast2. Если его нет, вся эта конструкция работать не будет. Эта ошибка очень часто возникает в Интернете.
Запустим сервер Icecast2: /usr/local/bin/icecast -c /usr/local/etc/icecast.xml
Смотрим файл error.log и убеждаемся, что Icecast2 увидел и съел наш сертификат. Открываем в интернет-браузере порты 8000 и 8443 и еще раз убеждаемся, что все работает.
Настраиваем автоматический запуск Icecast2 при загрузке операционной системы через службу «Настройки» — «Автозагрузка», прописав туда команду запуска из предыдущего пункта.
Здесь было объявлено о решении этой проблемы с помощью SSL-сертификата от Let`s Encrypt без компиляции Icecast2 из исходников.
Однако у меня это не сработало.
Теги: #Настройка Linux #Давайте зашифруем #SSL #icecast2 #ices2
-
Google Построит Дата-Центр За $600 Млн
19 Oct, 24 -
Путь От Проекта К Продукту
19 Oct, 24 -
Флеш-Видео В Opera Mini: Интересное Решение
19 Oct, 24 -
Rtcp Как Инструмент Администратора Телефонии
19 Oct, 24