Данный сайт продаётся. Доменное имя SSL.su можно приобрести онлайн на торговой площадке РЕГ.ру по ссылке. Вопросы сотрудничества и приобретения доменных имён - domains [at] rupost.org

Установка SSL LetsEncrypt для Icecast2 Debian+Nginx

Новости

Установка SSL

Установка SSL LetsEncrypt для Icecast2 Debian+Nginx

Всё большую популярность набирают разного рода проекты со стримингом онлайн-радио и музыки. Наиболее распространённым дистрибутивом для создания стримингового сервера на сегодняшний день является icecast. Но в дефолтном состоянии icecast выводит поток без поддержки SSL сертификата, то есть http://ip-addr:8000/ или http://домен:8000/ (В случае с Apache).
В этой статье мы рассмотрим как быстро добавить сертификат SSL и доменое имя к серверу icecast2 посредством Nginx, а также как установить SSL для Icecast2 на Debian или Ubuntu.

Внимание! Так как это тестовый сервер, здесь и далее все команды будут выполняться от пользователя root, чего я настоятельно не рекомендую для продакшн серверов. Также вместо команды apt-get можно использовать apt, но я по старой привычке использую первый вариант.

Итак, для начала нам понадобится сам сервер icecast2.

Установка Icecast2 на примере Debian 9.

Сам процесс достаточно прост, сервис ставится из дефолтного репозитория.

1. Устанавливаем Icecast2:
# apt-get install icecast2 
В процессе установки можно сконфигурировать основные пароли для Icecast, либо пропустить этот шаг и в дальнейшем сконфигурировать его вручную.
Все пути устанавливаем по-умолчанию.
Установка сервера Icecast2
Установка Icecast2 Debian 9
Установка Icecast2 Debian 9
Установка Icecast2 Debian 9

2. Редактируем конфигурацию icecast в соответствии с вашими пожеланиями.

Файл icecast2 по-умолчанию скачать пример.

3. Перезапускаем сервис:
# service icecast2 restart

4. Проверяем запустился ли сервис и всё ли в порядке. Подтверждением нормальной работе будет статус Active (Running).
# service icecast2 status
Перед дальнейшими действиями рекомендуется проверить корректность A записей DNS домена командой DIG.
DIG A ваш_домен.ru

Проверка корректности A записей DNS

Установка Nginx Debian 9 / Ubuntu:

# apt-get install nginx
После успешной установки конфигурируем доменное имя для сервера:

1. Создадим директорию домена в папке /etc/nginx/sites-available:
# mkdir /etc/nginx/sites-available/stream.ssl.su

2. Создаём файл конфгурации для доменного имени:
# nano /etc/nginx/sites-available/stream.ssl.su/stream.ssl.su.conf

Для начала файл конфигурации будет выглядеть очень просто. Пример конфигурации без SSL:
server {
    listen 80;

    server_name example.com;

    root /var/www/example.com; index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}


3. Создадим симлинк на созданный файл в папке /etc/nginx/sites-enabled:
# ln /etc/nginx/sites-available/stream.ssl.su/stream.ssl.su.conf /etc/nginx/sites-enabled

4. Перезапускаем сервер Nginx:
# service nginx restart

5. Проверим корректность работы сервера:
# service nginx status
Статус Nginx Active (Running)
Всё в порядке, статус Active (Running).

6. Проверяем доступность сайта на порту 8000 (дефолтный):
Проверка домена Icecast + Nginx

Установка бота для получения сертификатов LetsEncrypt (Certbot для Nginx).


1. Устанавливаем certbot-nginx, по ходу установки подтверждаем или заполняем то, что запросит установщик:
# apt install certbot python3-certbot-nginx

2. Получаем сертификат LetsEncrypt для нашего домена:
# certbot --nginx -d stream.ssl.su -d www.stream.ssl.su
Успешная установка сертификата SSL LetsEncrypt
3. Объединяем полученные сертификаты в сертификат для icecast и помещаем в директорию, которая прописана в конфигурационном файле /etc/icecast2/icecast.xml:
# cat /etc/letsencrypt/live/stream.ssl.su/cert.pem /etc/letsencrypt/live/stream.ssl.su/privkey.pem > /usr/share/icecast2/icecast.pem

4. Чтобы не было ошибки после конфигурирования nginx и у нас работал Forward Secrycy генерируем параметры ssl. Сохранить его можно в любую папку, я кладу в дефолт. В зависимости от параметров сервера процесс занимает некоторое время, поэтому лучше попить чайку.
# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
 
Параметр 2048 - криптостойкость ключа
Генерация dhparams.pem для Nginx5. Обновляем конфигурацию доменного имени в папке /etc/nginx/sites-available/ВАШ_ДОМЕН.RU:
server
{
  listen 80;
  server_name ВАШ_ДОМЕН.RU;

  location ~ /.well-known
  {
    allow all;
  }

#### SSL ######################################################

server
{
  #ssl on;
  ssl_certificate_key /etc/letsencrypt/live/ВАШ_ДОМЕН.RU/privkey.pem;
  ssl_certificate /etc/letsencrypt/live/ВАШ_ДОМЕН.RU/fullchain.pem;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
  # Recommended security settings from https://wiki.mozilla.org/Security  /Server_Side_TLS
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
  ssl_prefer_server_ciphers on;
  ssl_ecdh_curve secp384r1;
  ssl_session_timeout 5m;
  ssl_session_cache shared:SSL:5m;
  ssl_session_tickets off;
  ssl_stapling on;
  ssl_stapling_verify on;
  resolver 8.8.8.8 8.8.4.4 valid=300s;
  resolver_timeout 5s;
  Enable this if you want HSTS (recommended)
# With or without preload (without very secure but not recommended)
  add_header Strict-Transport-Security "max-age=15768000; includeSubdomains;";
#add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload;";
  add_header X-Frame-Options DENY;
  add_header X-Content-Type-Options nosniff;
  listen 443 ssl;
  root /var/www/html;

  server_name ВАШ_ДОМЕН.RU;

  location ~ /.well-known
  {
    allow all;
  }

  location /
  {
    access_log /etc/icecast2/logs/access_https.log;
    proxy_pass http://127.0.0.1:8000/;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

6. После успешной генерации перезапускаем Nginx и проверяем статус сервера:
# service nginx restart
# service nginx status

Конфигурирование icecast2 после получения SSL LetsEncrypt и настройки Nginx.

1. Добавляем в конфигурационный файл /etc/icecast2/icecast.xml
    <listen-socket>
        <port>8443</port>
        <ssl>/usr/share/icecast2/icecast.pem</ssl>
    </listen-socket>
    
2. Перезапускаем Icecast2:
# service icecast2 restart

3. Проверим валидность конфигурации:
# service icecast2 status
Icecast2 status
4. Настроим редирект с http на https в файле конфигурации, добавив в первую секцию server:
  location /
  {
    if ($ssl_protocol = "")
    {
      rewrite ^ https://$server_name$request_uri? permanent;
    }
  }

5. Переходим на свой сайт уже с https и убеждаемся, что всё работает.
Сертификат Icecast2 LetsEncrypt + NginxSSL сертификат LetsEncrypt для Icecast

Успех! - https://stream.ssl.su

Для большей наглядности вставлю плеер с подгрузкой потока, для чего на локальном сервере установил ices2, который проигрывает треки из папки:

Установка SSL ISPmanager 5
Руководство по установке сертификата SSL для сайта в панель управления хостингом ISPmanager 5 версий Business и Lite
Установка SSL сертификата
Инструкция по установке и настройке SSL сертификата в популярной панели управления хостингом DirectAdmin
Полезное:

Промокод и скидка 5% на регистрацию доменных имён и покупку хостинга от Reg.Ru.

E549-831B-C86A-8746

Для друзей: