Tous les produits
Search
Centre de documentation

CDN:Configurer le chiffrement standard et la réécriture M3U8

Dernière mise à jour :Aug 18, 2026

Lorsqu'un client demande un fichier M3U8, cette fonctionnalité ajoute automatiquement les paramètres d'authentification de la requête à l'URI de la clé dans la balise #EXT-X-KEY. Cela sécurise l'accès à vos clés de chiffrement sans modifier votre serveur d'origine et empêche la lecture non autorisée des vidéos.

Cas d'utilisation

Dans un flux de travail de chiffrement HLS standard, la balise #EXT-X-KEY spécifie l'URI permettant de récupérer la clé de déchiffrement. Si cette URI est une adresse publique fixe et non protégée, toute personne ayant obtenu le fichier M3U8 peut télécharger la clé et déchiffrer le contenu vidéo, ce qui rend le chiffrement inefficace.

Cette fonctionnalité résout le problème en associant un jeton d'authentification dynamique et vérifiable à chaque demande de clé. Elle est idéale pour les scénarios nécessitant un contrôle d'accès aux clés de chiffrement HLS, tels que :

  • Vidéos payantes et formation en ligne : Pour empêcher les utilisateurs de partager les URL M3U8 avec des personnes non abonnées, générez un paramètre d'authentification unique pour chaque utilisateur connecté. Cela garantit que seuls les utilisateurs autorisés peuvent récupérer la clé de déchiffrement pendant sa période de validité.

  • Protection des droits d'auteur des diffusions en direct : Pour les grands événements sportifs ou les diffusions en direct, combinez des paramètres d'authentification générés dynamiquement avec l'authentification d'URL CDN. Cela permet un contrôle d'accès granulaire au flux en direct et empêche efficacement le hotlinking.

Fonctionnement

  1. Un client envoie une requête à votre serveur d'application. En fonction de votre logique métier (par exemple, la connexion de l'utilisateur), le serveur d'application génère un paramètre d'authentification avec une période de validité et une signature (par exemple, token=xxxx) et le renvoie au client.

  2. Le client ajoute ce paramètre d'authentification à la fin de l'URL de la requête du fichier M3U8 et envoie une requête M3U8 à un point de présence (PoP) CDN.

  3. Avant de renvoyer le fichier M3U8, le PoP CDN analyse son contenu, repère la balise #EXT-X-KEY et ajoute le paramètre d'authentification de l'URL de requête du client à la fin de l'attribut URI de la balise.

  4. Le client reçoit le fichier M3U8 réécrit depuis le CDN et envoie une requête au serveur de clés en utilisant la nouvelle URI de clé, qui inclut désormais le paramètre d'authentification.

  5. Le serveur de clés reçoit la demande de clé, extrait le paramètre d'authentification de l'URL et le valide. Si la validation réussit, il renvoie la clé de déchiffrement. Sinon, il rejette la demande.

  6. Après avoir obtenu la clé, le client déchiffre le flux vidéo TS et lance la lecture.

Important
  • Cette fonctionnalité ne chiffre pas le contenu vidéo. Avant d'utiliser cette fonctionnalité, assurez-vous que les segments vidéo (fichiers TS) sur votre serveur d'origine sont chiffrés selon une norme HLS, telle qu'AES-128. Le fichier M3U8 d'origine doit également contenir la balise #EXT-X-KEY correcte. Pour plus d'informations sur le chiffrement vidéo, consultez Comment générer et chiffrer un fichier M3U8.

  • Le serveur d'application et le serveur de clés sont présentés ici pour illustrer le flux global. Vous devez les implémenter vous-même pour compléter le processus d'authentification des clés HLS.

  • La balise #EXT-X-KEY spécifie si le contenu est chiffré. Pour plus d'informations sur les balises des fichiers M3U8, consultez Contenu d'un fichier HLS M3U8.

Procédure

  1. Connectez-vous à la console CDN.

  2. Dans le volet de navigation de gauche, cliquez sur Domain Names.

  3. Sur la page Domain Names, recherchez le nom de domaine cible et cliquez sur Manage dans la colonne Actions.

  4. Dans le volet de navigation du domaine, cliquez sur Video.

  5. Dans la section M3U8 Encryption and Rewrite, activez l'interrupteur M3U8 Encryption and Rewrite.

    Remarque

    Après avoir activé M3U8 Encryption and Rewrite, le nom de paramètre par défaut est MtsHlsUriToken.

  6. Facultatif : Pour modifier le nom du paramètre afin qu'il corresponde à votre client, effectuez les étapes suivantes :

    1. Cliquez sur Modify à côté de Custom Parameter Name.

    2. Dans la boîte de dialogue Custom Parameter Name, définissez Parameter Name.

      Si vous ne spécifiez pas de valeur, le nom du paramètre prend par défaut la valeur MtsHlsUriToken.

      Remarque

      Les noms de paramètres sont sensibles à la casse. Assurez-vous que le nom de paramètre que vous définissez correspond exactement au nom de paramètre dans les requêtes du client. Par exemple, si la requête du client inclut le paramètre MtsHlsUriToken et que vous définissez le nom de paramètre personnalisé dans la console CDN sur mtshlsuritoken, la configuration ne prend pas effet.

    3. Cliquez sur OK pour terminer la configuration.

Exemple

  1. Accédez au fichier M3U8 accéléré par CDN dans votre navigateur et ajoutez MtsHlsUriToken=tokenxxxxx à la fin de la requête. Exemple : http://<nom de domaine accéléré par CDN>/video.m3u8?MtsHlsUriToken=tokenxxxxx

    Dans les outils de développement de votre navigateur, le panneau Network montre que la requête pour le fichier M3U8 inclut le paramètre personnalisé, mais la requête de clé suivante ne l'inclut pas.

  2. Dans la console CDN, activez M3U8 Encryption and Rewrite. Si nécessaire, vous pouvez définir un nom de paramètre personnalisé (cette démonstration utilise le paramètre par défaut MtsHlsUriToken). Dans la console CDN, activez la fonctionnalité M3U8 encryption and rewrite et définissez Custom Parameter Name sur MtsHlsUriToken.

  3. Répétez l'étape 1. Accédez au fichier M3U8 accéléré par CDN dans un navigateur et ajoutez MtsHlsUriToken=tokenxxxxx à la fin de la requête.

    Dans les outils de développement de votre navigateur, sur le panneau Network, vous pouvez voir que la requête pour l'adresse de la clé inclut désormais le paramètre personnalisé.

    L'URL de requête pour le fichier de clé encryption_key.key inclut le paramètre MtsHlsUriToken=tokenxxxxx et la réponse a un code d'état 206 et une Content-Length de 16 octets.

FAQ

Qu'est-ce que le protocole HLS ?

HTTP Live Streaming (HLS) est un protocole de streaming multimédia basé sur HTTP développé par Apple. Il divise un flux vidéo en petits segments Transport Stream (TS) et utilise un fichier texte avec l'extension M3U8 comme liste de lecture. Pour démarrer la lecture, un client télécharge d'abord la liste de lecture M3U8, puis télécharge chaque segment média séquentiellement en utilisant les URL qu'elle contient.

Que contient un fichier HLS M3U8 ?

Balises M3U8 de base :

  • #EXTM3U : L'en-tête du fichier. Doit être la première ligne de la liste de lecture.

  • EXT-X-MEDIA-SEQUENCE : Le numéro de séquence du premier segment TS. Généralement 0. Dans le streaming en direct, il identifie le point de départ. Par exemple, #EXT-X-MEDIA-SEQUENCE:0.

  • #EXT-X-TARGETDURATION : La durée maximale d'un segment média. Par exemple, #EXT-X-TARGETDURATION:10 définit le maximum à 10 secondes.

  • #EXT-X-ALLOW-CACHE : Indique si le client peut mettre en cache les segments média. Valeurs valides : #EXT-X-ALLOW-CACHE:YES et #EXT-X-ALLOW-CACHE:NO. Par défaut : YES.

  • #EXT-X-ENDLIST : Marque la fin de la liste de lecture.

  • #EXTINF : Informations supplémentaires sur un segment média, telles que la durée et la bande passante. Format : #EXTINF:<duration>,[<title>]. La valeur avant la virgule est la durée du segment, qui ne doit pas dépasser la valeur #EXT-X-TARGETDURATION.

  • #EXT-X-VERSION : Le numéro de version de la liste de lecture M3U8.

  • #EXT-X-DISCONTINUITY : Signale une rupture entre les segments média précédents et suivants.

  • #EXT-X-PLAYLIST-TYPE : Indique le type du flux.

  • #EXT-X-KEY : Spécifie la méthode de déchiffrement pour les segments média chiffrés. Par exemple : #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/video.key?token=xxx" utilise le chiffrement AES-128. La clé est récupérée depuis https://example.com/video.key?token=xxx, stockée localement et utilisée pour déchiffrer les fichiers TS suivants.

Comment générer et chiffrer un fichier M3U8 ?

  1. Générez une clé de chiffrement.

    Cette clé est généralement une chaîne aléatoire de 16 octets pour le chiffrement AES-128. Générez un fichier de clé avec OpenSSL :

    openssl rand 16 > encryption_key.key
  2. Préparez le fichier key_info.txt. L'outil de chiffrement utilise ce fichier pour chiffrer les fichiers vidéo HLS.

    https://example.com/encryption_key.key
    /path/to/local/encryption_key.key
    • La première ligne est l'URL de la clé de chiffrement générée à l'étape 1. Nous recommandons d'héberger le fichier sur un serveur d'origine OSS accéléré par CDN.

    • La deuxième ligne est le chemin absolu du fichier de clé local.

  3. Utilisez FFmpeg pour générer et chiffrer les fichiers vidéo 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 : Spécifie le fichier vidéo à convertir, tel qu'une vidéo au format MP4.

    • -c:v copy : Copie le flux vidéo directement sans réencodage.

    • -c:a copy : Copie le flux audio directement sans réencodage.

    • -hls_time 10 : Définit la durée de chaque fichier TS à 10 secondes. Vous pouvez modifier ce paramètre en fonction de la durée de la vidéo d'origine.

    • -hls_key_info_file key_info.txt : Spécifie le fichier contenant les informations de la clé de chiffrement.

    • -hls_list_size 0 : Définit le nombre d'index de fichiers TS à conserver dans le fichier M3U8. Une valeur de 0 indique que tous les index de fichiers .ts sont conservés.

    • output_playlist.m3u8 : Le nom du fichier de liste de lecture HLS de sortie (c'est-à-dire le nom du fichier M3U8).

  4. Enregistrez les fichiers chiffrés TS et les fichiers M3U8 sur un serveur, tel qu'un serveur d'origine OSS accéléré par CDN. Ensuite, utilisez un nom de domaine accéléré par CDN dans un navigateur pour accéder au fichier M3U8 afin d'activer la lecture chiffrée des vidéos utilisant le protocole HLS.