Ранее описывался способ привязки сертификата в самом конфиге 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
А в 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;
}
}
}
Здравствуйте.
Можно чуть подробнее:
1. Откуда взялся /play.conf?
2. Какие настройки ссылаются на него в nginx.conf и как он сам выглядит?
3. Как при этом поменялись настройки icecast.conf (ссылка на файла-сертификата, блок с ssl)?
Здравсвтуйте.… и он может работать на стандартном 8000 порту по http.
1. Этот файл Вы создаете сами, содержимое ниже. Название файла может быть любое с расширением conf.
2. Nginx обрабатывает автоматически файлы такого типа в директории /etc/nginx/sites-enabled/ по-умолчанию.
2. В icecast.conf просто можно удалить секцию
Спасибо.
Ну, и раз уже решил зайти, чтобы сказать спасибо, спрошу по-пути: понять не могу, для чего используется bind-address параметр, как им пользоваться?
Пожалуйста! Это адрес интерфейса, на котором будет происходить вещание. Если не указан, то на всех.
Автор молодец, спасибо большое за информацию , сделал все по инструкции и все заработало .
Вот еще автор бы сказал, как Title выводить c IceCast в nginx…
Я все что возможно (метатэги) забираю с помощью php и curl по ссылке http://localhost:8000/status.xsl, а потом вывожу на странице как надо.