Top.Mail.Ru

CDN

Secure token. Настроить и использовать

1. Перейдите в настройки желаемого CDN-ресурса.

2. Включите опцию Secure token.

3. В появившемся поле введите любой набор символов длиной от 6 до 32 символов.

4. Если контент должен быть доступен с любых IP-адресов, оставьте пустым чекбокс «Добавить IP-адрес к токену». Если хотите, чтобы контент был доступен только с одного IP, поставьте в чекбоксе галочку (доверенный IP вы укажете позже, на шаге №6).

5. Сохраните изменения.

Secure token. Настроить и использовать

6.  Эту настройку выполните на сервере-источнике. Добавьте на свой источник скрипт, который генерирует защищённые ссылки на контент. Получившиеся ссылки должны иметь вид:

http://cdn.example.com/photo.jpeg?md5=DMF1ucDxtHCxwYQ&expires=2147483647

Где:

  • http://cdn.example.com/photo.jpeg — путь к файлу.

  • DMF1ucDxtHCxwYQ — результат хэш-функции MD5(String), где String — параметр, полученный слиянием элементов: <время истечения ссылки><путь к файлу><доверенный IP> <ключ, который вы указали на шаге №3>.

  • 2147483647 — момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp.

Мы подготовили для вас шаблоны скриптов для PHP, Python и OpenSSL — просто скопируйте один из них из раздела «Скрипты для генерации ссылок». Скрипт начнёт создавать защищённые ссылки на контент.

7. Эту настройку выполните на сервере-источнике. Организуйте свой источник таким образом, чтобы доступ к нужным файлам пользователи получали только по ссылкам с secure token. При этом наша CDN при обращении к серверу-источнику должна получать контент вне зависимости от наличия ключа.

На этом настройка закончена, опция Secure token работает и защищает ваш контент.

Скрипт для создания временных ссылок с ограничением доступа по 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 — итоговая ссылка на файл.

Скрипт для создания временных ссылок с ограничением доступа по 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, который ограничивает время жизни ссылки и открывает доступ к контенту только доверенному 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 — секретный ключ, который вы ввели на шаге №3 инструкции «Настройка опции».

Скрипты выше только генерируют secure token. Вам нужно самостоятельно создать дополнительный скрипт, который добавляет к ссылкам secure token и время истечения ссылки, а также приводит ссылку к виду:

http://cdn.example.com/photo.jpeg?md5=DMF1ucDxtHCxwYQ&expires=2147483647

Где:

  • http://cdn.example.com/photo.jpeg — путь к файлу,

  • DMF1ucDxtHCxwYQ — secure token,

  • 2147483647 — момент времени, после которого ссылка будет считаться недействительной, в формате UNIX timestamp.

Мы используем cookie, чтобы сайт стал лучше для вас.