Выбор языка

Генератор ключей Web Bot Auth и HTTP Message Signatures

Локальная генерация ключей Ed25519 в браузере, создание каталога JWK и готовых примеров подписанных HTTP-запросов для поисковых и AI-ботов.

Генератор ключей Web Bot AuthКак это работает ↓
Источник https, на котором будет размещен каталог ключей. Становится значением заголовка Signature-Agent.
Используется только для примера подписанного запроса ниже
Записывает nbf и exp в запись каталога

Пара ключей генерируется с помощью Web Crypto API в вашем браузере и никогда не покидает эту страницу. При перезагрузке она будет удалена, поэтому сохраните закрытый ключ перед уходом.

Mehmet Demiray (Мехмет Демирай) Опубликовано Обновлено
Поделиться

Что такое Web Bot Auth и зачем подписывать запросы ботов

Традиционные методы идентификации поисковых роботов и AI-агентов основаны на заголовке User-Agent и проверке диапазонов IP-адресов. Заголовок User-Agent легко подделать в любом HTTP-клиенте, а поддержка актуальных списков IP-адресов требует постоянной синхронизации и часто дает сбои при использовании распределенных облачных сетей. В результате веб-мастера вынуждены блокировать подозрительный трафик целиком либо пропускать нежелательных скраперов под видом легитимных поисковых систем.

Инициатива Web Bot Auth решает эту проблему с помощью криптографической аутентификации на базе стандарта IETF RFC 9421 (HTTP Message Signatures). Вместо доверия текстовой строке сервер проверяет криптографическую подпись каждого входящего запроса. Бот подписывает заголовок своим приватным ключом, а целевой веб-сайт сверяет подпись с публичным ключом, опубликованным на официальном домене владельца бота. Данный механизм находится в статусе черновиков IETF, но уже активно внедряется ведущими поисковыми платформами и разработчиками языковых моделей.

Что генерирует инструмент и как устроены выходные данные

Генератор ключей Web Bot Auth создает полноценный набор данных, необходимый для запуска аутентификации бота. В основе лежит асимметричная ключевая пара алгоритма Ed25519, создаваемая средствами Web Crypto прямо в браузере.

Инструмент формирует следующие компоненты:

  • Идентификатор ключа (Key ID), рассчитанный как JWK Thumbprint по стандартам RFC 7638 и RFC 8037 с кодированием в Base64URL.
  • Файл каталога ключей в формате JSON для размещения по адресу /.well-known/http-message-signatures-directory, содержащий только публичную часть ключа и опциональные метки времени действия nbf и exp.
  • Заголовки ответа для каталога с образцом подписи на 24 ч.
  • Приватный ключ в форматах JWK и PKCS#8 PEM для безопасного сохранения в хранилище секретов вашего бота.
  • Публичный ключ в формате SPKI PEM.
  • Пример подписанного запроса к целевому серверу, включающий заголовок Signature-Input с компонентами @authority и signature-agent, тегом web-bot-auth и сроком действия 5 мин, готовую команду curl и точную строку базы подписи (signature base).

Публикация каталога публичных ключей на сервере

Для подтверждения подлинности запросов владельцу бота необходимо опубликовать сгенерированный JSON-файл каталога ключей на своем веб-сервере. Каталог размещается по строго определенному пути: https://example.com/.well-known/http-message-signatures-directory.

При отдаче этого файла веб-сервер должен соблюдать технические требования стандарта:

  1. Возвращать заголовок Content-Type: application/http-message-signatures-directory+json.
  2. Отвечать по протоколу HTTPS без перенаправлений.
  3. Передавать собственный заголовок цифровой подписи ответа, подтверждающий, что каталог отдан именно владельцем домена.

В реальной рабочей среде подпись ответа каталога генерируется сервером динамически с коротким сроком жизни. Если при генерации была выбрана ограниченная валидность ключа (например, на 30 дн., 90 дн. или 365 дн.), JSON будет содержать параметры nbf (not before) и exp (expiration). Это позволяет организовать плановую ротацию ключей без риска отклонения запросов робота принимающей стороной.

Как формируется цифровая подпись запроса по RFC 9421

Формирование подписи HTTP-сообщения по стандарту RFC 9421 происходит строго детерминированным образом. Принимающая сторона должна собрать абсолютно идентичную строку базы подписи для проверки математической корректности.

Процесс подписи состоит из следующих шагов:

  • Определение списка покрываемых компонентов. Для Web Bot Auth обязательными являются служебный компонент @authority (доменное имя и порт целевого ресурса) и заголовок signature-agent (HTTPS-источник бота).
  • Формирование метаданных в заголовке Signature-Input. Здесь указываются параметры created (метка времени создания), expires (время истечения подписи, обычно через 5 мин), keyid (идентификатор публичного ключа), alg со значением ed25519 и тег tag="web-bot-auth".
  • Сборка базы подписи (signature base). Каждое имя компонента в кавычках с двоеточием и значением помещается на отдельную строку, разделяемую символом перевода строки \n. Последней строкой добавляется служебная запись @signature-params с точным содержимым параметров подписи.
  • Вычисление подписи приватным ключом Ed25519 от полученной байтовой строки базы подписи и запись результата в кодировке Base64 в заголовок Signature.

Безопасность и локальная генерация приватного ключа

Генератор ключей Web Bot Auth работает исключительно в среде браузера с использованием встроенного API Web Crypto. Сгенерированная ключевая пара Ed25519, включая приватный ключ, никогда не отправляется по сети и не сохраняется на серверах сервиса. При перезагрузке страницы или закрытии вкладки несохраненный приватный ключ уничтожается без возможности восстановления.

После нажатия кнопки генерации необходимо сразу сохранить приватный ключ в формате JWK или PKCS#8 PEM в защищенное хранилище секретов (HashiCorp Vault, AWS Secrets Manager или зашифрованные переменные окружения). Публичный каталог ни при каких обстоятельствах не должен содержать параметр приватного ключа d. В общедоступный файл каталога попадают только открытые параметры алгоритма crv, kty и координата x.

Аутентификация бота и управление доступом к контенту

Криптографическая подпись запросов решает задачу идентификации: сервер может однозначно доказать, что запрос отправлен конкретной организацией. Однако аутентификация не отменяет правила доступа к ресурсам сайта.

Для комплексного управления поведением краулеров используются взаимодополняющие протоколы:

  • Web Bot Auth подтверждает подлинность агента и исключает маскировку спам-ботов под известные системы.
  • Стандарт robots.txt определяет, какие разделы сайта разрешено сканировать роботам. Сформировать корректные директивы для современных краулеров помогает генератор robots.txt для AI, а проверить готовый файл можно через тестер robots.txt.
  • Файлы llms.txt предоставляют структурированный контекст для языковых моделей и AI-ассистентов.

Сочетание цифровой подписи запросов и четких инструкций в robots.txt позволяет выстроить прозрачное и безопасное взаимодействие между владельцами контента и автоматизированными агентами.

Самые частые вопросы.

Как настроить Web Bot Auth для своего бота или краулера?

Сгенерируйте пару ключей через Генератор ключей Web Bot Auth, укажите HTTPS-домен бота и опубликуйте открытый ключ в JSON-файле по пути /.well-known/http-message-signatures-directory. Затем настройте отправку HTTP-заголовков Signature, Signature-Input и Signature-Agent в каждом запросе бота, подписывая их сгенерированным закрытым ключом Ed25519. Разрешенные для обхода разделы сайта можно заранее скорректировать с помощью генератора robots.txt для AI.

Передаётся ли закрытый ключ на сервер при генерации?

Нет, генерация происходит полностью локально в браузере с помощью стандартного API Web Crypto. Закрытый ключ никогда не покидает память вкладки и никуда не отправляется по сети. Генератор ключей Web Bot Auth работает бесплатно, без регистрации и не сохраняет ваши данные.

Что представляет собой идентификатор ключа keyid и как он вычисляется?

Параметр keyid служит уникальным отпечатком открытого ключа. Он рассчитывается как криптографический отпечаток JWK Thumbprint по стандартам RFC 7638 и RFC 8037: вычисляется хеш SHA-256 от канонической JSON-структуры открытого ключа, а затем кодируется в формат base64url без знаков заполнения. Сервер получателя сверяет этот идентификатор со списком в директории ключей.

Почему в спецификациях Web Bot Auth выбран алгоритм Ed25519?

Алгоритм цифровой подписи Ed25519 на основе кривой Эдвардса обеспечивает высокий уровень криптографической стойкости при компактном размере ключей и высокой скорости вычислений. В отличие от традиционных схем RSA или ECDSA, генерация подписи в Ed25519 детерминирована и не требует качественного источника случайных чисел в момент подписания каждого HTTP-запроса.

Что такое базовая строка подписи (signature base)?

Базовая строка подписи представляет собой точный канонизированный текст, сформированный из HTTP-компонентов запроса (@authority, signature-agent и других) вместе с метаданными Signature-Input согласно RFC 9421. Любое несовпадение пробелов, символов перевода строки или регистра приведет к невалидной подписи, поэтому сгенерированный пример базовой строки служит эталоном для отладки собственного кода.

Чем Web Bot Auth лучше проверки по User-Agent или спискам IP-адресов?

Строку User-Agent легко подделать в любом клиенте, а списки публичных IP-адресов быстро устаревают, требуют постоянной поддержки и сложны для динамических облачных инфраструктур. Web Bot Auth использует криптографическую подпись каждого HTTP-запроса по стандарту RFC 9421, что позволяет вебмастерам мгновенно и безошибочно проверять подлинность краулера через его открытый ключ. Корректность доступности страниц после авторизации можно верифицировать с помощью проверки robots.txt.

После перезагрузки страницы ключ исчез. Можно ли его восстановить?

Восстановить утерянный закрытый ключ невозможно, поскольку браузер очищает память при перезагрузке, а сервер не сохраняет сгенерированные пары. Рекомендуется сразу копировать и сохранять закрытый ключ в защищенном хранилище секретов. Если ключ был утерян до развертывания, просто сгенерируйте новую пару и опубликуйте актуальный открытый ключ в директории бота.

Какой срок действия ключа выбрать при генерации?

Выбор зависит от политики безопасности вашей системы. Бессрочный ключ избавляет от необходимости регулярных обновлений конфигурации, однако при компрометации закрытого ключа потребуется экстренный отзыв. Срок действия 90 дн. или 365 дн. внедряет здоровую практику регулярной ротации ключей через поля nbf и exp в каталоге ключей.