Для настройки параметров безопасности:
- Перейдите в раздел «CDN» и кликните на нужный ресурс.
- На вкладке «Управление» нажмите «Настроить» в блоке «Безопасность».
- Включите необходимые опции и настройте их параметры.
- Нажмите «Сохранить».
Редирект с HTTP на HTTPS
Автоматически перенаправляет все запросы с HTTP на защищенный протокол HTTPS.
Это позволяет защищать данные пользователей, соответствовать требованиям браузеров и улучшать показатели SEO.
Как работает:
- Пользователь обращается по протоколу HTTP.
- CDN возвращает редирект (301/302) на HTTPS.
- Дальнейшее взаимодействие идет по защищенному соединению.
Настройка применяется на уровне CDN и не требует дополнительной конфигурации на уровне сервера-источника.
Перед включением опции убедитесь, что для доменов раздачи выпущен SSL-сертификат и включена опция ниже.
SSL-сертификат
Позволяет использовать SSL на домене раздачи.
Сертификат должен быть предварительно добавлен в разделе «CDN» → «SSL-сертификаты».
Secure token
Ограничивает доступ к контенту с помощью подписанных URL.
Может использоваться для контроля доступа к файлам, ограничения доступа к платному контенту, предотвращения прямого распространения ссылок.
Может использоваться для:
- защиты приватного или платного контента;
- ограничения срока действия ссылок;
- предотвращения прямого распространения ссылок;
- ограничения доступа по IP-адресу.
Как работает:
- К URL добавляется специальная подпись (token), сгенерированная на основе секретного ключа.
- CDN проверяет валидность подписи.
- Если подпись корректна, доступ разрешается, если нет — возвращается ошибка 403 Forbidden.
В поле «Секретный ключ» укажите произвольный секретный ключ, который будет использоваться для генерации подписей URL.
Ключ:
- создается и хранится на стороне клиента;
- должен быть известен только вашему приложению и CDN;
- используется при формировании подписанных ссылок.
Рекомендуется использовать случайную строку длиной не менее 16 символов. Сгенерировать ее можно, например, так:
openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32; echo
Строка будет такого вида:
OCr2qxnZvdvMLtcy904EkABxn1eVPZLP
После включения Secure token ваше приложение должно формировать подписанные URL для доступа к контенту согласно алгоритму.
Алгоритм формирования подписи
Подписанный URL формируется на основе секретного ключа и параметров запроса.
1. Формирование строки для подписи
Для расчета подписи используется строка вида:
<secret_key><path><ip><expires>
<secret_key>— секретный ключ, указанный в настройках;<path>— путь к запрашиваемому ресурсу;<ip>— IP-адрес пользователя (используется только если включена проверка по IP);<expires>— время истечения ссылки.
Если проверка по IP или времени отключена, соответствующие значения в строку не добавляются.
2. Вычисление подписи
- От полученной строки вычисляется MD5-хэш;
- Результат кодируется в
base64и приводится к URL-safe-формату:- символ
=удаляется; +заменяется на-;/заменяется на_.
- символ
3. Использование подписи в URL
Полученное значение используется как токен в пути URL ресурса:
http://<cdn-domain>/md5(<signature>,<expires>)/<resource-path>
Примечания
- Домен CDN не участвует в расчете подписи.
- Один и тот же ресурс может использоваться по HTTP и HTTPS с одной и той же подписью.
Пример генерации подписанных ссылок:
import hashlib
import base64
import time
SECRET = "your_secret_key"
CDN_DOMAIN = "https://example.cdn.twcstorage.ru"
PATH = "/example.txt" # путь к файлу
EXPIRES = int(time.time()) + 3600 # ссылка действует 1 час
IP = "" # укажите IP, если используется ограничение
# Формирование строки для подписи
raw = SECRET + PATH + IP + str(EXPIRES)
# MD5-хэш
md5_hash = hashlib.md5(raw.encode()).digest()
# base64 + URL-safe формат
token = base64.b64encode(md5_hash).decode()
token = token.replace("+", "-").replace("/", "_").replace("=", "")
# Итоговый URL
signed_url = f"{CDN_DOMAIN}/md5({token},{EXPIRES}){PATH}"
print(signed_url)
Где:
-
SECRET— ключ, сгенерированный ранее. -
CDN_DOMAIN— домен CDN-ресурса. -
PATH— путь к файлу, начиная с/. Домен указывать не нужно. -
EXPIRES— время истечения ссылки в формате Unix timestamp. -
IP— указывается только если включено ограничение по IP. Если не используется, оставьте пустую строку.
Ограничение по IP
Доступно при включенной опции «Secure token».
Разрешает доступ к контенту только с определенного IP-адреса.
Как работает:
- IP-адрес включается в подпись URL.
- CDN сравнивает IP пользователя с указанным и запрещает доступ при несовпадении.