Еще один способ создания шифрованного 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;
}
}
}


Добавить комментарий

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

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

UNLIX © 2019

При копировании материалов ОБЯЗАТЕЛЬНО указывать актуальную ссылку на сайт.