Настройка IceCast для вещания через протокол https

Другие приложения, разработанные под маркой Sound Empire

Модераторы: Dark-Horse, Wlad

Настройка IceCast для вещания через протокол https

Сообщение Slafa » Ср дек 15, 2021 1:20 pm

Эта инструкция в первую очередь для тех, кто размещает IceCast-сервер на Windows

1. Для вещания через https понадобится SSL-сертификат и доменное имя. Поэтому сначала нужно купить домен, привязать к нему сертификат и реальный IP-адрес. Для тех, кто покупает домен на REG.RU доступен бесплатный сертификат. После подтверждения домена на почту придет письмо с содержимым СЕРТИФИКАТОВ:
"Ваш сертификат предоставлен ниже
-----BEGIN CERTIFICATE-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE-----

Корневой сертификат
-----BEGIN CERTIFICATE-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE-----

Промежуточный сертификат
-----BEGIN CERTIFICATE-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE-----

Запрос на получение сертификата
-----BEGIN CERTIFICATE REQUEST-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE REQUEST-----


Сохраните приватный ключ на локальном компьютере.
-----BEGIN RSA PRIVATE KEY-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END RSA PRIVATE KEY-----
"
Теперь из этого письма берете сертификат и закрытый ключ.
Копируем их в один текстовый файл и сохраняем с расширением icecast.pem
Содержимое(структура) этого файла выглядит так:

-----BEGIN CERTIFICATE---— (сам сертификат, идет первым в письме)
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----(закрытый ключ)
-----END RSA PRIVATE KEY-----

получившийся файл закидываете в корень папки Icecast
root_icecast.jpg
root_icecast.jpg (119.26 KiB) Просмотров: 11050

Дальше из письма формируете ТРИ сертификата ориентируясь на соответствующие комментарии:
1.(сам сертификат, идет первым в письме), содержимое файла:
-----BEGIN CERTIFICATE-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE-----
2. корневой сертификат, содержимое файла:
-----BEGIN CERTIFICATE-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE-----
3.Промежуточный сертификат, содержимое файла:
-----BEGIN CERTIFICATE-----
хххххххххххххххххххххххххххххххххххх
хххххххххххххххххххххххххххххххххххх
-----END CERTIFICATE-----
Все три файла формируете в блокноте, затем "Сохранить как - >выбираете тип файла "Все файлы" и сохраняете как ИМЯ ФАЙЛА.pem. Для каждого файла делайте свое уникальное и понятное для вас название.
Все три файла копируете на машину, на которой будет работать сервер. У этой машины внешний(реальный, статический) IP должен быть привязан к доменному имени, на которое выдан SSL-сертификат.
В панели управления выбираете " Свойства браузера"- вкладка Содержание - кнопка "Сертификаты" - "Импорт". Выбираете файл сертификата (тип файла - все файлы). Указываете для каждого ТИПА сертификата свой ТИП Хранилища.
2. Настройка конфиг - файла для IceCast сервера. Вот текст усреднённого конфига:
************************************************************************************************************************************
<icecast>
<!-- location and admin are two arbitrary strings that are e.g. visible
on the server info page of the icecast web interface
(server_version.xsl). -->
<location>Russia</location>
<admin>E-MAIL администратора</admin>

<!-- This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. You MUST configure it properly for YP listings to work!
-->
<hostname>ДОМЕННОЕ ИМЯ САЙТА</hostname>

<!-- IMPORTANT!
Especially for inexperienced users:
Start out by ONLY changing all passwords and restarting Icecast.
For detailed setup instructions please refer to the documentation.
It's also available here: http://icecast.org/docs/
-->

<limits>
<clients>100</clients>
<sources>50</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<!-- If enabled, this will provide a burst of data when a client
first connects, thereby significantly reducing the startup
time for listeners that do substantial buffering. However,
it also significantly increases latency between the source
client and listening client. For low-latency setups, you
might want to disable this. -->
<burst-on-connect>1</burst-on-connect>
<!-- same as burst-on-connect, but this allows for being more
specific on how much to burst. Most people won't need to
change from the default 64k. Applies to all mountpoints -->
<burst-size>65535</burst-size>
</limits>

<authentication>
<!-- Sources log in with username 'source' -->
<source-password>Пароль для ИСТОЧНИКА(SE Caster)</source-password>
<!-- Relays log in with username 'relay' -->
<relay-password>Пароль для подключения relay-сервера</relay-password>

<!-- Admin logs in with the username given below -->
<admin-user>ЛОГИН АДМИНИСТРАТОРА</admin-user>
<admin-password>ПАРОЛЬ АДМИНИСТРАТОРА</admin-password>
</authentication>

<!-- set the mountpoint for a shoutcast source to use, the default if not
specified is /stream but you can change it here if an alternative is
wanted or an extension is required
<shoutcast-mount>/live.nsv</shoutcast-mount>
-->

<!-- Uncomment this if you want directory listings -->
<!--
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
-->

<!-- You may have multiple <listener> elements -->
<listen-socket>
<port>8000</port>
<ssl>0</ssl>
<!-- <bind-address>127.0.0.1</bind-address> -->
<!-- <shoutcast-mount>/eplus.mp3</shoutcast-mount> -->

</listen-socket>
<!--
<listen-socket>
<port>8080</port>
</listen-socket>
-->
<listen-socket>
<port>8443</port>
<ssl>1</ssl>
</listen-socket>


<!-- Global header settings
Headers defined here will be returned for every HTTP request to Icecast.

The ACAO header makes Icecast public content/API by default
This will make streams easier embeddable (some HTML5 functionality needs it).
Also it allows direct access to e.g. /status-json.xsl from other sites.
If you don't want this, comment out the following line or read up on CORS.
-->
<http-headers>
<header name="Access-Control-Allow-Origin" value="*" />
</http-headers>


<!-- Relaying
You don't need this if you only have one server.
Please refer to the config for a detailed explanation.
-->
<!--<master-server>127.0.0.1</master-server>-->
<!--<master-server-port>8001</master-server-port>-->
<!--<master-update-interval>120</master-update-interval>-->
<!--<master-password>hackme</master-password>-->

<!-- setting this makes all relays on-demand unless overridden, this is
useful for master relays which do not have <relay> definitions here.
The default is 0 -->
<!--<relays-on-demand>1</relays-on-demand>-->

<!--
<relay>
<server>127.0.0.1</server>
<port>8080</port>
<mount>/example.ogg</mount>
<local-mount>/different.ogg</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
-->


<!-- Mountpoints
Only define <mount> sections if you want to use advanced options,
like alternative usernames or passwords
-->

<!-- Default settings for all mounts that don't have a specific <mount type="normal">.
-->
<!--
<mount type="default">
<public>0</public>
<intro>/server-wide-intro.ogg</intro>
<max-listener-duration>3600</max-listener-duration>
<authentication type="url">
<option name="mount_add" value="http://auth.example.org/stream_start.php"/>
</authentication>
<http-headers>
<header name="foo" value="bar" />
</http-headers>
</mount>
-->

<!-- Normal mounts -->
<!--
<mount type="normal">
<mount-name>/example-complex.ogg</mount-name>

<username>othersource</username>
<password>hackmemore</password>

<max-listeners>100</max-listeners>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<burst-size>65536</burst-size>
<fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<intro>/example_intro.ogg</intro>
<hidden>1</hidden>
<public>1</public>
<authentication type="htpasswd">
<option name="filename" value="myauth"/>
<option name="allow_duplicate_users" value="0"/>
</authentication>
<http-headers>
<header name="Access-Control-Allow-Origin" value="http://webplayer.example.org" />
<header name="baz" value="quux" />
</http-headers>
</mount>
-->

<!--
<mount type="normal">
<mount-name>/auth_example.ogg</mount-name>
<authentication type="url">
<option name="mount_add" value="http://myauthserver.net/notify_mount.php"/>
<option name="mount_remove" value="http://myauthserver.net/notify_mount.php"/>
<option name="listener_add" value="http://myauthserver.net/notify_listener.php"/>
<option name="listener_remove" value="http://myauthserver.net/notify_listener.php"/>
<option name="headers" value="x-pragma,x-token"/>
<option name="header_prefix" value="ClientHeader."/>
</authentication>
</mount>
-->

<fileserve>1</fileserve>

<paths>
<logdir>./log</logdir>
<webroot>./web</webroot>
<adminroot>./admin</adminroot>

<!-- Aliases: treat requests for 'source' path as being for 'dest' path
May be made specific to a port or bound address using the "port"
and "bind-address" attributes.
-->
<!--
<alias source="/foo" destination="/bar"/>
-->
<!-- Aliases: can also be used for simple redirections as well,
this example will redirect all requests for http://server:port/ to
the status page
-->
<alias source="/" destination="/status.xsl"/>
<!-- The certificate file needs to contain both public and private part.
Both should be PEM encoded. -->
<ssl-certificate>./icecast.pem</ssl-certificate>

</paths>

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<!-- <playlistlog>playlist.log</playlistlog> -->
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize> <!-- Max size of a logfile -->
<!-- If logarchive is enabled (1), then when logsize is reached
the logfile will be moved to [error|access|playlist].log.DATESTAMP,
otherwise it will be moved to [error|access|playlist].log.old.
Default is non-archive mode (i.e. overwrite)
-->
<!-- <logarchive>1</logarchive> -->
</logging>
</icecast>
***************************************************************************************************************************************
Не забудьте указать в тексте свои:
E-MAIL администратора
ДОМЕННОЕ ИМЯ САЙТА
Пароль для ИСТОЧНИКА(SE Caster)
Пароль для подключения relay-сервера
ЛОГИН АДМИНИСТРАТОРА
ПАРОЛЬ АДМИНИСТРАТОРА
В данном конфиге http -порт: 8000, он же используется для подключения SE Caster(логин:source,Пароль для ИСТОЧНИКА)
https-порт:8443
Например, ссылка для http-потока: http://youdomen.ru:8000/test
ссылка для https-потока: https://youdomen.ru:8443/test
После изменения конфига не забудьте перезапустить icecast-сервер.
Если сервер работает за роутером, то не забудьте настроить перенаправление по данному порту 8443 на внутренний\локальный адрес.
Slafa
Новичок
 
Сообщений: 37
Зарегистрирован: Вт июн 26, 2012 8:26 am
Откуда: Россия Московская область Серпухов

Re: Настройка IceCast для вещания через протокол https

Сообщение Trafik » Ср дек 15, 2021 7:53 pm

По моим наблюдениям, во всяком случае на Icecast -kh добавление сертификатов излишне.И даже порт ssl можно не прописывать.
У разных ЦС могут быть разные структуры сертификата,из тех что видел,сертификат домена всегда был первым.
Если информацию не смогли найти и есть установленый OpenSSL,то введя команду openssl x509 -in XXXX.crt -noout -subject
или онлайн https://www.isplicense.ru/ssl-tools/decoder/ - вы увидите в Common Name: WWW.ваш-домен.com -значит это то,что вам нужно.
Sound Empire 3.1.1 Build 132
Trafik
Новичок
 
Сообщений: 48
Зарегистрирован: Вс июн 10, 2018 9:30 pm

Re: Настройка IceCast для вещания через протокол https

Сообщение Wlad » Ср дек 15, 2021 11:09 pm

Вот я обсуждаю вопрос в личке и никак не могу понять, как сделать мне в моей ситуации.
Имеется несколько доменных имен (com.ua, .ru, .com). Они направлены на хостера.
Там стоит "просто сервер". Нет никаких сторонних служб и нет возможности их запустить.
Для запуска надо брать себе VPS-сервер и тогда на нём поднимать остальное.
Теперь. Я отделяю одно доменное имя и перенаправляю в именах себе на внешний статичный IP-адрес.
У роутера открываю порт 2ХХХХ, который пробрасываю себе на машину также со статичным адресом внутри сети.
Условно 192.168.44.15:8443
Теперь, когда ко мне идут на хттп://Империя.com:2ХХХХ, то попадают на мой компьютер 192.168.44.15:8443
Сервер настроен. Кастер работает.
Но я так и не понял, как мне добить сертификат. :?
Т.к. у меня не сайт на доменном имени, то возникают с ним, с сертификатом, проблемы.

Извините, я байты гоняю по проводам. А во всём специалистом быть невозможно. :cry:
Люди редко добиваются успеха, если заняты тем, что не доставляет им удовольствия. /Дейл Карнеги/
Wlad
Site Admin
 
Сообщений: 2565
Зарегистрирован: Пт сен 23, 2005 2:02 pm
Откуда: Запорожье

Re: Настройка IceCast для вещания через протокол https

Сообщение Trafik » Ср дек 15, 2021 11:49 pm

отписался в личку
Sound Empire 3.1.1 Build 132
Trafik
Новичок
 
Сообщений: 48
Зарегистрирован: Вс июн 10, 2018 9:30 pm

Re: Настройка IceCast для вещания через протокол https

Сообщение lomovpnz » Чт дек 16, 2021 11:28 am

Wlad писал(а):Вот я обсуждаю вопрос в личке и никак не могу понять, как сделать мне в моей ситуации.
Имеется несколько доменных имен (com.ua, .ru, .com). Они направлены на хостера.
Там стоит "просто сервер". Нет никаких сторонних служб и нет возможности их запустить.
Для запуска надо брать себе VPS-сервер и тогда на нём поднимать остальное.
Теперь. Я отделяю одно доменное имя и перенаправляю в именах себе на внешний статичный IP-адрес.
У роутера открываю порт 2ХХХХ, который пробрасываю себе на машину также со статичным адресом внутри сети.
Условно 192.168.44.15:8443
Теперь, когда ко мне идут на хттп://Империя.com:2ХХХХ, то попадают на мой компьютер 192.168.44.15:8443
Сервер настроен. Кастер работает.
Но я так и не понял, как мне добить сертификат. :?
Т.к. у меня не сайт на доменном имени, то возникают с ним, с сертификатом, проблемы.

Извините, я байты гоняю по проводам. А во всём специалистом быть невозможно. :cry:



я Trafika в личке уже забодал, всё сделал по его инструкции, воз и ныне там
lomovpnz
Новичок
 
Сообщений: 14
Зарегистрирован: Ср сен 16, 2020 2:24 pm
Откуда: Пенза


Вернуться в Утилиты

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron