All Products
Search
Document Center

CDN:Konfigurasikan enkripsi dan penulisan ulang M3U8 standar

Last Updated:Jun 22, 2026

Saat klien meminta file M3U8, fitur ini secara otomatis menambahkan parameter otentikasi dari permintaan ke URI kunci dalam tag #EXT-X-KEY. Hal ini mengamankan akses ke kunci enkripsi Anda tanpa mengubah server origin dan mencegah pemutaran video oleh pihak yang tidak berwenang.

Kasus Penggunaan

Dalam alur kerja enkripsi HLS standar, tag #EXT-X-KEY menentukan URI untuk mengambil kunci dekripsi. Jika URI tersebut merupakan alamat publik tetap yang tidak dilindungi, siapa pun yang mendapatkan file M3U8 dapat mengunduh kunci dan mendekripsi konten video, sehingga enkripsi menjadi tidak efektif.

Untuk mengatasi masalah ini, fitur ini melampirkan token otentikasi dinamis yang dapat diverifikasi pada setiap permintaan kunci. Fitur ini ideal untuk skenario yang memerlukan kontrol akses terhadap kunci enkripsi HLS, seperti:

  • Video berbayar dan pendidikan daring: Untuk mencegah pengguna membagikan URL M3U8 kepada pengguna non-pembayar, Anda dapat menghasilkan parameter otentikasi unik untuk setiap pengguna yang telah login. Hal ini memastikan hanya pengguna yang berwenang yang dapat mengambil kunci dekripsi dalam periode validitasnya.

  • Perlindungan hak cipta siaran langsung: Untuk acara olahraga besar atau siaran langsung, Anda dapat menggabungkan parameter otentikasi yang dihasilkan secara dinamis dengan otentikasi URL CDN. Ini memungkinkan kontrol akses detail halus terhadap siaran langsung dan secara efektif mencegah hotlinking.

Cara Kerja

  1. Klien mengirim permintaan ke server aplikasi Anda. Berdasarkan logika bisnis Anda, seperti login pengguna, server aplikasi menghasilkan parameter otentikasi dengan periode validitas dan signature (misalnya, token=xxxx) dan mengembalikannya ke klien.

  2. Klien menambahkan parameter otentikasi ini ke akhir URL permintaan file M3U8 dan mengirim permintaan M3U8 ke titik kehadiran (PoP) CDN.

  3. Sebelum mengembalikan file M3U8, PoP CDN mengurai kontennya, menemukan tag #EXT-X-KEY, dan menambahkan parameter otentikasi dari URL permintaan klien ke atribut URI tag tersebut.

  4. Klien menerima file M3U8 yang telah ditulis ulang dari CDN dan mengirim permintaan ke server kunci menggunakan URI kunci baru yang kini mencakup parameter otentikasi.

  5. Server kunci menerima permintaan kunci, mengekstrak parameter otentikasi dari URL, dan memvalidasinya. Jika validasi berhasil, server mengembalikan kunci dekripsi. Jika tidak, permintaan ditolak.

  6. Setelah mendapatkan kunci, klien mendekripsi aliran video TS dan memulai pemutaran.

Penting
  • Fitur ini tidak mengenkripsi konten video. Sebelum menggunakan fitur ini, pastikan segmen video (file TS) di server origin Anda telah dienkripsi sesuai standar HLS, seperti AES-128. File M3U8 asli juga harus berisi tag #EXT-X-KEY yang benar. Untuk informasi lebih lanjut tentang enkripsi video, lihat Cara menghasilkan dan mengenkripsi file M3U8.

  • Server aplikasi dan server kunci dijelaskan di sini untuk membantu Anda memahami fitur enkripsi dan penulisan ulang M3U8. Fitur ini tidak mengimplementasikan server aplikasi atau server kunci. Anda harus mengimplementasikan fungsionalitasnya sendiri untuk menyelesaikan proses otentikasi kunci HLS.

  • Tag #EXT-X-KEY menentukan apakah konten dienkripsi. Untuk informasi lebih lanjut tentang tag file M3U8, lihat Apa saja isi file M3U8 HLS.

Prosedur

  1. Login ke CDN console.

  2. Di panel navigasi kiri, klik Domain Names.

  3. Pada halaman Domain Names, temukan nama domain target dan klik Manage di kolom Actions.

  4. Di panel navigasi domain, klik Video.

  5. Di bagian M3U8 Encryption and Rewrite, aktifkan sakelar M3U8 Encryption and Rewrite.

    Catatan

    Setelah Anda mengaktifkan M3U8 Encryption and Rewrite, nama parameter default-nya adalah MtsHlsUriToken.

  6. Opsi: Untuk mengubah nama parameter agar sesuai dengan klien Anda, lakukan langkah-langkah berikut:

    1. Klik Modify di samping Custom Parameter Name.

    2. Di kotak dialog Custom Parameter Name, atur Parameter Name.

      Jika Anda tidak menentukan nilai, nama parameter akan menggunakan default MtsHlsUriToken.

      Catatan

      Nama parameter bersifat case-sensitive. Pastikan nama parameter yang Anda atur persis sama dengan nama parameter dalam permintaan klien. Misalnya, jika permintaan klien mencakup parameter MtsHlsUriToken dan Anda mengatur nama parameter kustom di CDN console menjadi mtshlsuritoken, konfigurasi tidak akan berlaku.

    3. Klik OK untuk menyelesaikan konfigurasi.

Contoh

  1. Akses file M3U8 yang dipercepat CDN di browser Anda dan tambahkan MtsHlsUriToken=tokenxxxxx di akhir permintaan. Contoh: http://<CDN-accelerated domain name>/video.m3u8?MtsHlsUriToken=tokenxxxxx

    Di panel Network developer tools browser Anda, permintaan untuk file M3U8 mencakup parameter kustom, tetapi permintaan kunci berikutnya tidak.

  2. Di CDN console, aktifkan M3U8 Encryption and Rewrite. Jika diperlukan, Anda dapat mengatur nama parameter kustom (demonstrasi ini menggunakan parameter default MtsHlsUriToken). Di CDN console, aktifkan fitur M3U8 encryption and rewrite, dan atur Custom Parameter Name menjadi MtsHlsUriToken.

  3. Ulangi Langkah 1. Akses file M3U8 yang dipercepat CDN di browser dan tambahkan MtsHlsUriToken=tokenxxxxx di akhir permintaan.

    Di panel Network developer tools browser Anda, Anda dapat melihat bahwa permintaan untuk alamat kunci kini mencakup parameter kustom.

    URL permintaan untuk file kunci encryption_key.key mencakup parameter MtsHlsUriToken=tokenxxxxx, dan respons memiliki kode status 206 serta Content-Length 16 byte.

FAQ

Apa itu protokol HLS?

HTTP Live Streaming (HLS) adalah protokol transport media streaming berbasis HTTP yang dikembangkan oleh Apple. Protokol ini bekerja melalui HTTP, memungkinkan klien mengunduh file secara berurutan dari server. Protokol ini mensyaratkan bahwa video harus dalam format kontainer Transport Stream (TS). Selain file video TS, HLS menggunakan file teks dengan ekstensi M3U8 untuk mengontrol pemutaran. File M3U8 ini merupakan daftar putar yang berisi daftar segmen media. HLS bekerja dengan membagi aliran video menjadi segmen-segmen TS kecil. Untuk memulai pemutaran, klien pertama-tama mengunduh daftar putar M3U8, lalu mengunduh setiap segmen media secara berurutan menggunakan URL yang ada di daftar putar tersebut.

Apa saja isi file M3U8 HLS?

Tag dasar file M3U8:

  • #EXTM3U: Header file M3U8. Harus menjadi baris pertama daftar putar.

  • EXT-X-MEDIA-SEQUENCE : Nomor urut segmen TS pertama dalam daftar putar. Nilainya biasanya 0. Dalam streaming langsung, nomor urut ini mengidentifikasi titik awal segmen siaran langsung. Contohnya, #EXT-X-MEDIA-SEQUENCE:0.

  • #EXT-X-TARGETDURATION: Durasi maksimum segmen media. Contohnya, #EXT-X-TARGETDURATION:10 menunjukkan bahwa durasi maksimum setiap segmen adalah 10 detik.

  • #EXT-X-ALLOW-CACHE: Menunjukkan apakah klien boleh menyimpan cache segmen media. Nilainya bisa berupa #EXT-X-ALLOW-CACHE:YES atau #EXT-X-ALLOW-CACHE:NO. Nilai default-nya adalah YES.

  • #EXT-X-ENDLIST: Menandakan akhir daftar putar.

  • #EXTINF: Informasi tambahan tentang segmen media, seperti durasi dan bandwidth-nya. Formatnya biasanya #EXTINF:<duration>,[<title>]. Nilai sebelum koma adalah durasi segmen media saat ini. Durasi segmen harus kurang dari atau sama dengan nilai tag #EXT-X-TARGETDURATION.

  • #EXT-X-VERSION: Nomor versi daftar putar M3U8.

  • #EXT-X-DISCONTINUITY: Tag ini menandakan adanya jeda antara segmen media sebelumnya dan segmen berikutnya.

  • #EXT-X-PLAYLIST-TYPE : Menunjukkan jenis aliran.

  • #EXT-X-KEY: Menentukan cara mendekripsi segmen media yang dienkripsi. Contohnya: #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/video.key?token=xxx". Contoh ini menunjukkan bahwa algoritma enkripsinya adalah AES-128. Kunci diperoleh dengan mengirim permintaan ke https://example.com/video.key?token=xxx. Setelah kunci diperoleh, kunci tersebut disimpan secara lokal dan digunakan untuk mendekripsi file video TS berikutnya.

Cara menghasilkan dan mengenkripsi file M3U8?

  1. Hasilkan kunci enkripsi.

    Kunci ini biasanya berupa string acak 16 byte untuk enkripsi AES-128. Anda dapat menggunakan OpenSSL untuk menghasilkan file kunci yang berisi 16 byte acak dengan menjalankan perintah berikut:

    openssl rand 16 > encryption_key.key
  2. Siapkan file key_info.txt untuk enkripsi. Alat enkripsi akan mengenkripsi file video HLS berdasarkan file ini.

    https://example.com/encryption_key.key
    /path/to/local/encryption_key.key
    • Baris pertama adalah URL kunci enkripsi yang Anda hasilkan di Langkah 1. Kami menyarankan Anda menempatkan file tersebut di server origin OSS yang dipercepat CDN dan menggunakan nama domain yang dipercepat CDN untuk mengakses file tersebut.

    • Baris kedua adalah jalur mutlak file kunci lokal.

  3. Gunakan alat FFmpeg untuk menghasilkan dan mengenkripsi file 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: Menentukan file video yang akan dikonversi, seperti video dalam format MP4.

    • -c:v copy: Menyalin aliran video secara langsung tanpa re-encoding.

    • -c:a copy: Menyalin aliran audio secara langsung tanpa re-encoding.

    • -hls_time 10: Mengatur durasi setiap file TS menjadi 10 detik. Anda dapat mengubah pengaturan ini sesuai dengan durasi video asli.

    • -hls_key_info_file key_info.txt: Menentukan file yang berisi informasi kunci enkripsi.

    • -hls_list_size 0: Mengatur jumlah indeks file TS yang dipertahankan dalam file M3U8. Nilai 0 berarti semua indeks file .ts dipertahankan.

    • output_playlist.m3u8: Nama file daftar putar HLS keluaran (yaitu nama file M3U8).

  4. Simpan file TS dan file M3U8 yang telah dienkripsi ke server, seperti server origin OSS yang dipercepat CDN. Kemudian, gunakan nama domain yang dipercepat CDN di browser untuk mengakses file M3U8 guna mengaktifkan pemutaran video terenkripsi yang menggunakan protokol HLS.