Настройка опции
Скрипты для генерации защищённых ссылок
• PHP
• Python
• OpenSSL
Настройка опции
Первые три шага выполняйте в личном кабинете в разделе Secure token.
1. Включите опцию Secure token в настройках ресурса.
2. В поле «Ключ» введите любой набор символов длиной от 6 до 32 символов.
3. Если контент должен быть доступен с любых IP-адресов, оставьте пустым чекбокс «Добавить IP-адрес к токену». Если хотите, чтобы контент был доступен только с одного IP, поставьте в чекбоксе галочку (доверенный IP вы укажете позже, на шаге №4).
4. Эту настройку выполните на сервере-источнике. Добавьте на свой источник скрипт, который генерирует защищённые ссылки на контент. Получившиеся ссылки должны иметь вид:
В этой ссылке:
http://cdn.example.com/photo.jpeg — путь к файлу
DMF1ucDxtHCxwYQ — результат хэш-функции MD5(String), где String — параметр, полученный слиянием элементов: <время истечения ссылки><путь к файлу><доверенный IP> <ключ, который вы указали на шаге №2>
2147483647 — момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp
Мы подготовили для вас шаблоны скриптов для PHP, Python и OpenSSL — просто скопируйте один из них из раздела «Скрипты для генерации ссылок». Скрипт начнёт создавать защищённые ссылки на контент.
5. Эту настройку выполните на сервере-источнике. Организуйте свой источник таким образом, чтобы доступ к нужным файлам пользователи получали только по ссылкам с secure token. При этом наша CDN при обращении к серверу-источнику должна получать контент вне зависимости от наличия ключа.
На этом настройка закончена, опция Secure token работает и защищает ваш контент.
Скрипты для генерации ссылок
Генерировать ссылки с secure token на PHP
Скрипт для создания временных ссылок с ограничением доступа по IP. Файлы будут доступны только с доверенного IP, и только пока не истечёт срок жизни ссылки.
<?php $secret = 'secret_key'; $ip = '1.2.3.4'; $path = '/live/133529_2/chunklist.m3u8'; $expires = time() + 10000; $link = "$expires$path$ip $secret"; $md5 = md5($link, true); $md5 = base64_encode($md5); $md5 = strtr($md5, '+/', '-_'); $md5 = str_replace('=', '', $md5); $url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}"; echo $url; echo "\n";
Скрипт для создания временных ссылок без ограничения доступа по IP. Файлы будут доступны с любого IP, но только пока не истечёт срок жизни ссылки.
<?php $secret = 'secret_key'; $path = '/live/133529_2/chunklist.m3u8'; $expires = time() + 10000; $link = "$expires$path $secret"; $md5 = md5($link, true); $md5 = base64_encode($md5); $md5 = strtr($md5, '+/', '-_'); $md5 = str_replace('=', '', $md5); $url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}"; echo $url; echo "\n"
В этих скриптах:
$secret — секретный ключ
$path — путь к файлу
$ip — IP-адрес, которому разрешено получить контент
$expires — момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp
$url — итоговая ссылка на файл
Генерировать ссылки с secure token на Python
Скрипт для создания временных ссылок с ограничением доступа по IP. Файлы будут доступны только с доверенного IP и только пока не истечёт срок жизни ссылки.
import base64 from hashlib import md from time import time ip = '1.2.3.4' secret = 'secret_key' stream_address = '133529_2' path = f'/live/{stream_address}/playlist.m3u8' expires = int(time()) + 100000 token = base64.encodebytes(md5(f"{expires}{path}{ip} {secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "") secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}" print(secured_url)
Скрипт для создания временных ссылок без ограничения доступа по IP. Файлы будут доступны с любого IP, но только пока не истечёт срок жизни ссылки.
import base64 from hashlib import md5 from time import time secret = 'secret_key' stream_address = '133529_2' path = f'/live/{stream_address}/playlist.m3u8' expires = int(time()) + 100000 token = base64.encodebytes(md5(f"{expires}{path} {secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "") secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}" print(secured_url)
В этих скриптах:
secret — секретный ключ
path — путь к файлу
ip — IP-адрес, которому разрешено получить контент
expires — момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp
secured_url — итоговая ссылка на файл
Сгенерировать secure token через OpenSSL
Скрипт для создания secure token, который ограничивает время жизни ссылки и открывает доступ к контенту только доверенному IP:echo -n '2147483647/images/1.jpg1.2.3.4 secret_key' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d ='2147483647/images/1.jpg1.2.3.4 secret_key' = '{expires}{path}{ip} {secret_key}'
Скрипт для создания secure token, который только ограничивает время жизни ссылки:
echo -n '2147483647/images/1.jpg secret_key' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d = '2147483647/images/1.jpg secret_key' = '{expires}{path} {secret_key}'
В этих скриптах:
2147483647/images/1.jpg — путь к файлу
1.2.3.4 — доверенный IP
secret_key — секретный ключ, который вы ввели на шаге №2 инструкции «Настройка опции»
Скрипты выше только генерируют secure token. Вам нужно самостоятельно создать дополнительный скрипт, который добавляет к ссылкам secure token и время истечения ссылки, а также приводит ссылку к виду:
В этой ссылке:
http://cdn.example.com/photo.jpeg — путь к файлу
DMF1ucDxtHCxwYQ — secure token
2147483647 — момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp