Icecast 2 и ssl
Я пытаюсь сделать работу icecast 2 и мой letencrypt SSL без везения. Пока что я создал icecast 2 с поддержкой openssl, и я также запустил его, но он всегда дает следующую ошибку в файле журнала.
[2021-03-15 12:48:21] WARN connection/get_ssl_certificate Invalid private key file /usr/local/icecast/share/fullchain.pem
[2021-03-15 12:48:21] INFO connection/get_ssl_certificate No SSL capability on any configured ports
Я установил эти файлы cert, читаемые пользователем: richard, и, конечно же, я также запускаю сервер самостоятельно с пользователем richard.
Может быть, вы знаете, что не так?
Вы также можете увидеть мой файл конфигурации здесь:
<listen-socket>
<port>8443</port>
<ssl>1</ssl>
</listen-socket>
В разделе пути я установил часть ssl-сертификата для SSL.
<ssl-certificate>/usr/local/icecast/share/icecast/fullchain.pem</ssl-certificate>
Пока ничего. Сам сервер запускается на порт, однако при посещении его через https://он просто не загружается. с http://порт (8443) работает отлично.
Любая помощь доступна.
Собственно, я сам решил проблему.
Проблема заключалась в том, что SSL не является конфигурацией. Похоже, что генерируемый LetsEncrypt SSL (fullchain.pem) работает некорректно. Поэтому вместо этого я скопировал содержимое из cert.pem и privkey.pem и создал новый файл с именем icecast.pem и вставил оба в один. (первый сертификат, а затем секретный ключ), и теперь все работает отлично и безопасно!
Я гений!!!
Еще один способ создания шифрованного ssl потока icecast через nginx | unlix
Ранееописывалсяспособ привязки сертификата в самом конфиге 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;
}
}
}
