Еще один способ создания шифрованного SSL потока Icecast через Nginx

nginx-icecast2-ssl

Ранее описывался способ привязки сертификата в самом конфиге Icecast. Это может и правильно, но не совсем удобно тем, что необходимо компилировать icecast с поддержкой ssl и дополнительно генерировать pem файл. С Nginx (если им проксировать Icecast) намного проще тем, что используется сертификат и ключ, которые, например, уже используются сайтом.

Итак, сейчас в нашем конфиге Icecast только нешифрованный поток на порту 8000.

 

 

Осталось лишь настроить проксирование на Nginx, чтобы он выкидывал наружу шифрованный 8443 порт. У меня все это выглядит так:

# cat /etc/nginx/sites-enabled/play.conf

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

server
{
ssl on;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_certificate /etc/nginx/ssl/example.com.crt;
# 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_dhparam /etc/nginx/ssl/dh_2048.pem;
ssl_session_timeout 5m;
# Enable this if you want HSTS (recommended)
add_header Strict-Transport-Security max-age=15768000;
listen 8443 ssl;
server_name www.example.com;

location /
{
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;
}
}

Вот и все. Но если Вы не хотите “светить” нешифрованным потоком по каким-то причинам, тогда надо биндить поток на 127.0.0.1

icecast-nginx

 

 

А в Nginx делать редирект на ssl (добавить перед секцией #### SSL ####):

##### NO SSL REDIRECT #########################################

server
{
listen 8000;
server_name www.example.com;
location /
{
if ($ssl_protocol = “”)
{
rewrite ^ https://$server_name$request_uri? permanent;
}
}
}


5 thoughts on “Еще один способ создания шифрованного SSL потока Icecast через Nginx”

  1. Здравствуйте.

    Можно чуть подробнее:
    1. Откуда взялся /play.conf?
    2. Какие настройки ссылаются на него в nginx.conf и как он сам выглядит?
    3. Как при этом поменялись настройки icecast.conf (ссылка на файла-сертификата, блок с ssl)?

    1. Здравсвтуйте.
      1. Этот файл Вы создаете сами, содержимое ниже. Название файла может быть любое с расширением conf.
      2. Nginx обрабатывает автоматически файлы такого типа в директории /etc/nginx/sites-enabled/ по-умолчанию.
      2. В icecast.conf просто можно удалить секцию и он может работать на стандартном 8000 порту по http.

      1. Спасибо.

        Ну, и раз уже решил зайти, чтобы сказать спасибо, спрошу по-пути: понять не могу, для чего используется bind-address параметр, как им пользоваться?

        1. Пожалуйста! Это адрес интерфейса, на котором будет происходить вещание. Если не указан, то на всех.

Добавить комментарий для Админ Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2024

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!