Radio Onda Popular
Logo

Configurar Icecast HTTPS / SSL con Let’s Encrypt: Guía de configuración

Escrito por
26 de septiembre de 2021
Configurar Icecast HTTPS / SSL con Let’s Encrypt: Guía de configuración

En esta guía, explico cómo habilitar HTTPS en Icecast y cómo generar certificados SSL de forma gratuita a través de Lets Encrypt.

Cada vez es más importante suministrar su audio a través de HTTPS. Con Chrome 80, lanzado en enero, Chrome intenta actualizar automáticamente las solicitudes de medios HTTP a HTTPS . Si el servidor no proporciona medios HTTPS, la solicitud fallará.

Esta guía asume que está ejecutando Ubuntu 18.04 o más reciente. Las versiones anteriores pueden funcionar, pero hay muchos problemas relacionados con las dependencias de los paquetes.

Algunas guías en línea le muestran cómo colocar Nginx o Apache frente a Icecast para la terminación de SSL, pero eso no es necesario. Ubuntu / Debian no proporciona una versión de Icecast con el soporte HTTPS habilitado ( debido a algunos problemas de licencia ), pero Xiph (la base detrás de Icecast) proporciona repositorios con una versión prediseñada de Icecast con soporte SSL

Incluso si ya tiene los paquetes Debian / Ubuntu de Icecast ya instalados en su sistema, es fácil actualizar usando el mismo proceso que se detalla a continuación.

Instalación de Icecast con soporte HTTPS

En su servidor, agregue el repositorio de paquetes Xiph a su lista de fuentes de apt:

sudo sh -c "echo deb http://download.opensuse.org/repositories/multimedia:/xiph/xUbuntu_18.10/ ./ >> / etc / apt / sources.list.d / icecast.list"

Descargue la clave de firma y agréguela a apt:

wget -qO - http://icecast.org/multimedia-obs.key | sudo apt-key add -

Nota: en el momento de escribir este artículo, la clave proporcionada en el comando anterior ha caducado. En su lugar, puede usar este comando para descargar el más nuevo de OpenSUSE directamente:

wget -qO - https://build.opensuse.org/projects/multimedia:libs/public_key | sudo apt-key add -

Actualice la caché de paquetes:

apt-get update

Ahora, puede instalar o actualizar Icecast:

apt-get install icecast2

En este punto, es posible que deba configurar Icecast. Si se trata de una nueva instalación, vaya a mi guía de configuración para obtener instrucciones detalladas . Si se trata de una instalación existente, Icecast debería seguir ejecutándose con su configuración actual. Asegúrate de probar esto ahora.

Instalación y ejecución de Lets Encrypt Certbot para Icecast

Ahora, podemos comenzar a instalar y ejecutar las herramientas necesarias para generar un certificado SSL. Esta sección asume que su servidor puede estar ubicado en ‘stream.example.com’.

Para que funcione la validación del certificado SSL, deberá tener configurado el DNS y apuntar a este servidor. Icecast ya debe estar ejecutándose en el puerto 80. Estoy usando el dominio ‘stream.example.com’ en esta guía; asegúrese de cambiar las rutas por las suyas.

apt-get install certbot

Ejecute certbot con el dominio correcto para su servidor:

sudo mkdir -p /var/www/html/.well-known/acme-challenge

echo "Contenido del archivo de verificación" | sudo tee /var/www/html/.well-known/acme-challenge/GlWu4s7IrYYH7wc1QGQn1_A8Cf6u6hn6nF9TBVOXVN0

echo "Contenido del archivo de verificación" | sudo tee /var/www/html/.well-known/acme-challenge/GlWu4s7IrYYH7wc1QGQn1_A8Cf6u6hn6nF9TBVOXVN0

curl -i http://envivo.top/.well-known/acme-challenge/GlWu4s7IrYYH7wc1QGQn1_A8Cf6u6hn6nF9TBVOXVN0
certbot certonly --webroot-path = "/ usr / share / icecast2 / web" -d 'stream.example.com'

Para crear la ruta .well-known/acme-challenge en Apache2 y asegurarte de que los archivos dentro de esta ruta sean servidos correctamente para la verificación de certificados ACME, sigue estos pasos:

  1. Crear el Directorio en tu Sitio Web:Abre una terminal y ejecuta los siguientes comandos para crear el directorio .well-known/acme-challenge en la raíz de tu sitio web:bashCopy codesudo mkdir -p /var/www/html/.well-known/acme-challenge Esto creará la estructura de directorios necesaria para la ruta .well-known/acme-challenge en la ubicación estándar de archivos web.
  2. Asegurarte de que los Archivos sean Accesibles:Asegúrate de que los archivos dentro del directorio .well-known/acme-challenge sean accesibles públicamente. Esto generalmente significa que el servidor web debe tener permisos para leer los archivos.
  3. Colocar el Archivo de Verificación:Coloca el archivo de verificación GlWu4s7IrYYH7wc1QGQn1_A8Cf6u6hn6nF9TBVOXVN0 dentro del directorio acme-challenge.Puedes usar el comando echo para crear el archivo. Por ejemplo:bashCopy codeecho "Contenido del archivo de verificación" | sudo tee /var/www/html/.well-known/acme-challenge/GlWu4s7IrYYH7wc1QGQn1_A8Cf6u6hn6nF9TBVOXVN0 Reemplaza "Contenido del archivo de verificación" con el contenido real del archivo que proporciona el sistema de verificación ACME.
  4. Verificar la Accesibilidad:Usa un navegador web o el comando curl para asegurarte de que los archivos dentro de la ruta .well-known/acme-challenge sean accesibles públicamente:bashCopy codecurl -i http://envivo.top/.well-known/acme-challenge/GlWu4s7IrYYH7wc1QGQn1_A8Cf6u6hn6nF9TBVOXVN0 Asegúrate de que el servidor devuelva un código de respuesta 200 (OK) y que el contenido del archivo sea visible en la respuesta.
  5. Verificar el Certificado con Certbot:Luego de confirmar que los archivos son accesibles, puedes ejecutar el comando Certbot para verificar el certificado. Por ejemplo:bashCopy codecertbot certonly --webroot-path="/var/www/html" -d 'envivo.top' Esto le indicará a Certbot que use la ruta /var/www/html como el directorio raíz web y realizará la verificación.

Siguiendo estos pasos, deberías poder crear y acceder a la ruta .well-known/acme-challenge en tu servidor Apache2 para la verificación de certificados.

¡Felicitaciones! Has obtenido con éxito tu certificado SSL utilizando Certbot. La salida que proporcionaste muestra que el proceso de obtención del certificado ha sido exitoso. Aquí tienes algunas observaciones clave de la salida:

  • Seleccionaste el plugin webroot para la autenticación y el instalador None, lo que indica que el certificado fue obtenido pero no se instaló automáticamente en ningún servidor web.
  • Certbot utilizó el desafío http-01 para verificar tu dominio envivo.top y utilizó la ruta /var/www/html como el directorio webroot para realizar la verificación.
  • El certificado y la cadena se guardaron en /etc/letsencrypt/live/envivo.top/fullchain.pem, y la clave privada se guardó en /etc/letsencrypt/live/envivo.top/privkey.pem.
  • La salida también proporciona información sobre la fecha de vencimiento del certificado y cómo obtener un nuevo certificado en el futuro.
  • Se mencionan enlaces para considerar donar a Let’s Encrypt y EFF, las organizaciones detrás de Certbot y el proyecto Let’s Encrypt.

Para concatenar los archivos de certificado y crear un archivo en el formato correcto para que Icecast los use, sigue estos pasos:

  1. Abrir una Terminal: Abre una terminal en tu sistema.
  2. Navegar a la Carpeta de Certificados: Asegúrate de estar en la ubicación donde se encuentran los archivos de certificado y clave privada que obtuviste con Certbot. Por lo general, estos archivos están en /etc/letsencrypt/live/envivo.top/.
  3. Concatenar los Archivos: Utiliza el comando cat para concatenar los archivos de certificado (fullchain.pem) y la clave privada (privkey.pem) en un solo archivo, que llamaremos bundle.pem:bashCopy codecat fullchain.pem privkey.pem > bundle.pem Este comando toma el contenido de fullchain.pem y luego agrega el contenido de privkey.pem, creando un nuevo archivo bundle.pem que contiene ambos.
  4. Verificar el Archivo Resultante: Puedes verificar que el archivo bundle.pem se haya creado correctamente usando el comando ls:bashCopy codels -l bundle.pem Esto te mostrará información sobre el archivo bundle.pem y su tamaño.

El archivo bundle.pem que has creado ahora contiene tanto el certificado como la clave privada concatenados en el formato necesario para que Icecast los utilice. Puedes usar este archivo para configurar Icecast y habilitar el soporte SSL/TLS. Recuerda configurar Icecast para que utilice este archivo en su configuración.

Puedes copiar el archivo bundle.pem a la ruta /etc/icecast2/ utilizando el comando sudo cp. Aquí está cómo hacerlo:

  1. Abrir una Terminal: Abre una terminal en tu sistema.
  2. Ejecutar el Comando de Copia: Ejecuta el siguiente comando para copiar el archivo bundle.pem a la ruta /etc/icecast2/. Asegúrate de reemplazar ruta_del_archivo con la ruta completa hacia el archivo bundle.pem:bashCopy codesudo cp ruta_del_archivo/bundle.pem /etc/icecast2/ Por ejemplo, si el archivo bundle.pem está en la carpeta /ruta/del/archivo/, el comando se vería así:bashCopy codesudo cp /ruta/del/archivo/bundle.pem /etc/icecast2/
  3. Verificar la Copia: Para verificar que el archivo se copió correctamente, puedes listar los archivos en la carpeta /etc/icecast2/ usando el comando ls:bashCopy codels -l /etc/icecast2/ Esto mostrará los archivos en esa carpeta, incluido el bundle.pem que acabas de copiar.

El archivo bundle.pem ahora debería estar en la carpeta /etc/icecast2/, y podrás utilizarlo en la configuración de Icecast para habilitar el soporte SSL/TLS

Cuando se le solicite, seleccione la opción ‘webroot’ e ingrese su dirección de correo electrónico. Su certificado debe generarse en este punto. Si recibe errores, anótelos y comience a investigar un poco en línea. El error más común es la imposibilidad de validar; en este caso, asegúrese de que se pueda acceder a Icecast a través de DNS en el puerto 80 y verifique que su webfoot sea realmente ‘/ usr / share / icecast2 / web’.

Ahora necesitamos concatenar dos archivos de certificado para que estén en el formato correcto para que los use Icecast:

cat /etc/letsencrypt/live/stream.example.com/fullchain.pem /etc/letsencrypt/live/stream1.example.com/privkey.pem> /etc/icecast2/bundle.pem

chmod 666 /etc/icecast2/bundle.pem

Si sabe con qué usuario se está ejecutando Icecast, puede ejecutar un chown en lugar de un chmod. Icecast necesita poder leer este nuevo archivo PEM, ese es el objetivo aquí.

Mientras lo pensamos, también debemos asegurarnos de que las renovaciones de certificados se ejecuten correctamente. Abra el archivo de configuración del certificado en un editor de texto:

nano /etc/letsencrypt/renewal/envivo.top.conf

Agregue esta línea a la sección [renewalparams] :

post_hook = sh -c "cat /etc/letsencrypt/live/stream.example.com/fullchain.pem /etc/letsencrypt/live/stream.example.com/privkey.pem > /etc/icecast2/bundle.pem && systemctl restart icecast2"

Corregido: post_hook = sh -c "cat /etc/letsencrypt/live/envivo.top/fullchain.pem /etc/letsencrypt/live/envivo.top/privkey.pem > /etc/icecast2/bundle.pem && systemctl restart icecast2"

Puedes validar el proceso de renovación para asegurarte de que funciona correctamente:

certbot renovar --dry-run

Configurar Icecast para SSL

Ahora estamos listos para terminar con esto y hacer que Icecast funcione con nuestro nuevo certificado.

Edite Icecast.xml en un editor de texto:

nano /etc/icecast2/icecast.xml

Agregue esta línea a la sección <paths> </paths>:

<ssl-certificate> /etc/icecast2/bundle.pem </ssl-certificate>

Ahora, agregue esta sección al documento (en el nodo XML raíz):

<escucha-socket>
    <port> 443 </port>
    <ssl> 1 </ssl>
</listen-socket>

Salga del editor de texto y ahora reinicie Icecast:

reinicio del servicio sudo icecast2

Si todo va bien, ahora puede navegar a httsp: //stream.example.com/ y también escuchar sus transmisiones de Internet a través de HTTPS.

Opcional: validación de DNS

Si utiliza una configuración de operación por turnos de Icecast, es posible que prefiera utilizar la validación del certificado DNS en lugar de la validación HTTP. Esto permitirá que cada servidor obtenga un certificado para un dominio.

Para hacer esto, necesita instalar un complemento de DNS para su proveedor. Los proveedores admitidos incluyen AWS Route53 y otros .

La instalación del complemento Route53 en su servidor es fácil:

apt-get install python3-certbot-dns-route53

Deberá crear un nuevo usuario en IAM con permisos en su zona DNS. Esto se hace a través de la consola de AWS IAM. Aquí hay una política de ejemplo:

{
     "Versión": "2012-10-17",
     "Declaración": [
         {
             "Sid": "VisualEditor0",
             "Efecto": "Permitir",
             "Acción": [
                 "route53: ListHostedZones",
                 "route53: GetChange"
             ],
             "Recurso": "*"
         },
         {
             "Sid": "VisualEditor1",
             "Efecto": "Permitir",
             "Acción": [
                 "route53: GetHostedZone",
                 "route53: ChangeResourceRecordSets",
                 "route53: ListResourceRecordSets"
             ],
             "Recurso": "arn: aws: route53 ::: zona hospedada / ABCDEF"
         }
     ]
 }

Deberá instalar la AWS CLI en su servidor. Cuando se le solicite, inserte las credenciales de AWS IAM que se le proporcionaron a través de la Consola de AWS.

curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" descomprime awscliv2.zip ./aws/install aws configure

Al solicitar inicialmente el certificado a través de certbot, su comando se vería así:

certbot certonly
–dns-route53
-d ‘stream.example.com’

Más Noticias

VIVO: Israel mató a 71 en el ataque prisionero, dice Irán, mientras los ataques de Gaza continúan

El ataque del 23 de junio de Israel golpeó varios edificios de la prisión y provocó preocupaciones de los grupos de derechos humanos sobre la seguridad de los reclusos. Duración…

La banda irlandesa Kneecap grita a Palestine Action Group en Glastonbury

Miles de fanáticos cantaron ‘Palestina libre’ y agitaron las banderas palestinas mientras el trío irlandés actuaba en el Reino Unido. El grupo de rap en idioma irlandés Kneecap ha actuado…

Con afluencia récord: Miles de personas desafían prohibición del primer ministro húngaro a Marcha del Orgullo en Budapest

28 jun. 2025 – 20:33 hrs. ¿Qué pasó? Con banderas arcoíris ondeando bien alto, decenas de miles de personas se manifestaron este sábado en la Marcha del Orgullo en Budapest,…

No descartan «la fuga de un laboratorio»: OMS sigue investigando hipótesis sobre el origen de la pandemia de Covid-19

27 jun. 2025 – 13:25 hrs. ¿Qué pasó? Todas las hipótesis sobre el origen del Covid-19 «siguen sobre la mesa», declaró este viernes el director de la Organización Mundial de…