Todos los productos
Search
Centro de documentos

CDN:Configuración del cifrado y reescritura estándar de M3U8

Última actualización: Sep 02, 2026

Cuando un cliente solicita un archivo M3U8, esta función agrega automáticamente los parámetros de autenticación de la solicitud a la URI de clave dentro de la etiqueta #EXT-X-KEY. Esto protege el acceso a sus claves de cifrado sin necesidad de modificar su servidor de origen y evita la reproducción no autorizada de video.

Casos de uso

En un flujo de trabajo de cifrado HLS estándar, la etiqueta #EXT-X-KEY especifica la URI para recuperar la clave de descifrado. Si esta URI es una dirección pública fija y desprotegida, cualquier persona que obtenga el archivo M3U8 puede descargar la clave y descifrar el contenido de video, lo que invalida el cifrado.

Esta función resuelve el problema al adjuntar un token de autenticación dinámico y verificable a cada solicitud de clave. Es ideal para escenarios que requieren control de acceso sobre las claves de cifrado HLS, tales como:

  • Video de pago y educación en línea: Para evitar que los usuarios compartan URL de M3U8 con personas que no han pagado, puede generar un parámetro de autenticación único para cada usuario que haya iniciado sesión. Esto garantiza que solo los usuarios autorizados puedan recuperar la clave de descifrado durante su periodo de validez.

  • Protección de derechos de autor en transmisiones en vivo: Para eventos deportivos importantes o transmisiones en directo, puede combinar parámetros de autenticación generados dinámicamente con la autenticación de URL de CDN. Esto permite un control de acceso detallado sobre la transmisión en vivo y previene eficazmente el hotlinking.

Funcionamiento

  1. Un cliente envía una solicitud a su servidor de aplicaciones. Con base en su lógica de negocio, como el inicio de sesión de usuario, el servidor de aplicaciones genera un parámetro de autenticación con un periodo de validez y una firma (por ejemplo, token=xxxx) y lo devuelve al cliente.

  2. El cliente agrega este parámetro de autenticación al final de la URL de solicitud del archivo M3U8 y envía una solicitud M3U8 a un punto de presencia (PoP) de CDN.

  3. Antes de devolver el archivo M3U8, el PoP de CDN analiza su contenido, busca la etiqueta #EXT-X-KEY y agrega el parámetro de autenticación de la URL de solicitud del cliente al final del atributo URI de la etiqueta.

  4. El cliente recibe el archivo M3U8 reescrito desde el CDN y envía una solicitud al servidor de claves mediante la nueva URI de clave, que ahora incluye el parámetro de autenticación.

  5. El servidor de claves recibe la solicitud de clave, extrae el parámetro de autenticación de la URL y lo valida. Si la validación es correcta, devuelve la clave de descifrado. De lo contrario, deniega la solicitud.

  6. Tras obtener la clave, el cliente descifra el flujo de video TS e inicia la reproducción.

Importante
  • Esta función no cifra el contenido de video. Antes de utilizar esta función, asegúrese de que los segmentos de video (archivos TS) en su servidor de origen estén cifrados según un estándar HLS, como AES-128. El archivo M3U8 original también debe contener la etiqueta #EXT-X-KEY correcta. Para obtener más información sobre el cifrado de video, consulte How to generate and encrypt an M3U8 file.

  • El servidor de aplicaciones y el servidor de claves se muestran aquí para ilustrar el flujo general. Debe implementarlos usted mismo para completar el proceso de autenticación de claves HLS.

  • La etiqueta #EXT-X-KEY especifica si el contenido está cifrado. Para obtener más información sobre las etiquetas de archivos M3U8, consulte What is in an HLS M3U8 file.

Procedimiento

  1. Inicie sesión en la CDN console.

  2. En el panel de navegación izquierdo, haga clic en Domain Names.

  3. En la página Domain Names, busque el nombre de dominio objetivo y haga clic en Manage en la columna Actions.

  4. En el panel de navegación del dominio, haga clic en Video.

  5. En la sección M3U8 Encryption and Rewrite, active el interruptor M3U8 Encryption and Rewrite.

    Nota

    Después de habilitar M3U8 Encryption and Rewrite, el nombre del parámetro predeterminado es MtsHlsUriToken.

  6. Opcional: Para modificar el nombre del parámetro y ajustarlo a su cliente, realice los siguientes pasos:

    1. Haga clic en Modify junto a Custom Parameter Name.

    2. En el cuadro de diálogo Custom Parameter Name, configure Parameter Name.

      Si no especifica un valor, el nombre del parámetro será de forma predeterminada MtsHlsUriToken.

      Nota

      Los nombres de parámetro distinguen entre mayúsculas y minúsculas. Asegúrese de que el nombre de parámetro que establezca coincida exactamente con el nombre de parámetro en las solicitudes del cliente. Por ejemplo, si la solicitud del cliente incluye el parámetro MtsHlsUriToken y usted configura el nombre de parámetro personalizado en la consola de CDN como mtshlsuritoken, la configuración no surtirá efecto.

    3. Haga clic en OK para completar la configuración.

Ejemplo

  1. Acceda al archivo M3U8 acelerado por CDN en su navegador y agregue MtsHlsUriToken=tokenxxxxx al final de la solicitud. Ejemplo: http://<nombre de dominio acelerado por CDN>/video.m3u8?MtsHlsUriToken=tokenxxxxx

    En las herramientas de desarrollador de su navegador, el panel Network muestra que la solicitud del archivo M3U8 incluye el parámetro personalizado, pero la solicitud de clave subsiguiente no lo incluye.

  2. En la consola de CDN, habilite M3U8 Encryption and Rewrite. Si es necesario, puede establecer un nombre de parámetro personalizado (esta demostración utiliza el parámetro predeterminado MtsHlsUriToken). En la consola de CDN, habilite la función M3U8 encryption and rewrite y configure Custom Parameter Name como MtsHlsUriToken.

  3. Repita el paso 1. Acceda al archivo M3U8 acelerado por CDN en un navegador y agregue MtsHlsUriToken=tokenxxxxx al final de la solicitud.

    En las herramientas de desarrollador de su navegador, en el panel Network, puede ver que la solicitud de la dirección de clave ahora incluye el parámetro personalizado.

    La URL de solicitud del archivo de clave encryption_key.key incluye el parámetro MtsHlsUriToken=tokenxxxxx, y la respuesta tiene un código de estado 206 y un Content-Length de 16 bytes.

Preguntas frecuentes

¿Qué es el protocolo HLS?

HTTP Live Streaming (HLS) es un protocolo de medios de streaming basado en HTTP desarrollado por Apple. Divide un flujo de video en pequeños segmentos de Transport Stream (TS) y utiliza un archivo de texto con extensión M3U8 como lista de reproducción. Para iniciar la reproducción, un cliente primero descarga la lista de reproducción M3U8 y luego descarga cada segmento de medios en secuencia utilizando las URL que contiene.

¿Qué contiene un archivo M3U8 de HLS?

Etiquetas básicas de M3U8:

  • #EXTM3U: El encabezado del archivo. Debe ser la primera línea de la lista de reproducción.

  • EXT-X-MEDIA-SEQUENCE : El número de secuencia del primer segmento TS. Normalmente es 0. En transmisiones en vivo, identifica el punto de inicio. Por ejemplo, #EXT-X-MEDIA-SEQUENCE:0.

  • #EXT-X-TARGETDURATION: La duración máxima de un segmento de medios. Por ejemplo, #EXT-X-TARGETDURATION:10 establece el máximo en 10 segundos.

  • #EXT-X-ALLOW-CACHE: Indica si el cliente puede almacenar en caché los segmentos de medios. Valores válidos: #EXT-X-ALLOW-CACHE:YES y #EXT-X-ALLOW-CACHE:NO. Valor predeterminado: YES.

  • #EXT-X-ENDLIST: Marca el final de la lista de reproducción.

  • #EXTINF: Información adicional sobre un segmento de medios, como la duración y el ancho de banda. Formato: #EXTINF:<duration>,[<title>]. El valor antes de la coma es la duración del segmento, que no debe exceder el valor de #EXT-X-TARGETDURATION.

  • #EXT-X-VERSION: El número de versión de la lista de reproducción M3U8.

  • #EXT-X-DISCONTINUITY: Señala una interrupción entre los segmentos de medios anteriores y posteriores.

  • #EXT-X-PLAYLIST-TYPE : Indica el tipo de flujo.

  • #EXT-X-KEY: Especifica el método de descifrado para los segmentos de medios cifrados. Por ejemplo: #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/video.key?token=xxx" utiliza cifrado AES-128. La clave se recupera desde https://example.com/video.key?token=xxx, se almacena localmente y se usa para descifrar los archivos TS subsiguientes.

¿Cómo generar y cifrar un archivo M3U8?

  1. Genere una clave de cifrado.

    Esta clave suele ser una cadena aleatoria de 16 bytes para el cifrado AES-128. Genere un archivo de clave con OpenSSL:

    openssl rand 16 > encryption_key.key
  2. Prepare el archivo key_info.txt. La herramienta de cifrado utiliza este archivo para cifrar archivos de video HLS.

    https://example.com/encryption_key.key
    /path/to/local/encryption_key.key
    • La primera línea es la URL de la clave de cifrado generada en el paso 1. Se recomienda alojar el archivo en un servidor de origen OSS acelerado por CDN.

    • La segunda línea es la ruta absoluta del archivo de clave local.

  3. Utilice FFmpeg para generar y cifrar archivos de video HLS.

    ffmpeg -i input_video.mp4 -c:v copy -c:a copy -hls_time 10 -hls_key_info_file key_info.txt -hls_list_size 0 output_playlist.m3u8
    • -i input_video.mp4: Especifica el archivo de video a convertir, como un video en formato MP4.

    • -c:v copy: Copia el flujo de video directamente sin recodificar.

    • -c:a copy: Copia el flujo de audio directamente sin recodificar.

    • -hls_time 10: Establece la duración de cada archivo TS en 10 segundos. Puede modificar esta configuración según la duración del video original.

    • -hls_key_info_file key_info.txt: Especifica el archivo que contiene la información de la clave de cifrado.

    • -hls_list_size 0: Establece el número de índices de archivos TS que se conservarán en el archivo M3U8. Un valor de 0 indica que se conservan todos los índices de archivos .ts.

    • output_playlist.m3u8: El nombre del archivo de lista de reproducción HLS de salida (es decir, el nombre del archivo M3U8).

  4. Guarde los archivos TS y M3U8 cifrados en un servidor, como un servidor de origen OSS acelerado por CDN. Luego, utilice un nombre de dominio acelerado por CDN en un navegador para acceder al archivo M3U8 y habilitar la reproducción cifrada de videos que utilizan el protocolo HLS.