Wybierz język

Generator kluczy Web Bot Auth i podpisów RFC 9421

Generuj w przeglądarce klucze Ed25519, twórz katalogi JSON dla botów sieciowych oraz przygotowuj gotowe nagłówki RFC 9421 i polecenia curl.

Generator kluczy Web Bot AuthJak to działa ↓
Źródło https, które będzie udostępniać katalog kluczy. Staje się wartością nagłówka Signature-Agent.
Używane wyłącznie w poniższym przykładzie podpisanego żądania
Zapisuje nbf oraz exp we wpisie katalogu

Para kluczy jest generowana przez Web Crypto API Twojej przeglądarki i nigdy nie opuszcza tej strony. Odświeżenie strony ją usunie, więc pobierz klucz prywatny przed wyjściem.

Mehmet Demiray Opublikowano Zaktualizowano
Udostępnij

Czym jest standard Web Bot Auth

Tradycyjna identyfikacja botów internetowych oraz scraperów AI opiera się na nagłówku User-Agent oraz listach adresów IP. Oba mechanizmy mają wady. Nagłówek User-Agent można łatwo sfałszować, a utrzymywanie stale zmieniających się list adresów IP jest kosztowne i zawodne. Standard Web Bot Auth, rozwijany w ramach projektów roboczych IETF Internet-Drafts bazujących na specyfikacji RFC 9421 HTTP Message Signatures, wprowadza kryptograficzne uwierzytelnianie każdego żądania HTTP.

Bot podpisuje kluczowe elementy zapytania za pomocą klucza prywatnego Ed25519. Serwer docelowy pobiera klucz publiczny bota z jego domeny i weryfikuje podpis. Dzięki temu właściciel witryny ma pewność, że ruch pochodzi od zadeklarowanego podmiotu, a nie od fałszywego skryptu podszywającego się pod znanego crawlera.

Struktura wygenerowanego zestawu kluczy

Generator kluczy Web Bot Auth tworzy kompletny pakiet danych wdrożeniowych. Kluczowym elementem jest identyfikator klucza (Key ID), wyliczany jako skrót JWK thumbprint zgodnie z RFC 7638 oraz RFC 8037 przy użyciu algorytmu SHA-256 kodowanego w formacie base64url.

Pakiet wyjściowy zawiera:

  1. Plik katalogu kluczy w formacie JSON przeznaczony do publikacji pod ścieżką /.well-known/http-message-signatures-directory.
  2. Klucz prywatny w formatach JWK oraz PKCS#8 PEM, służący do podpisywania żądań bota.
  3. Klucz publiczny w formacie SPKI PEM.
  4. Przykładowe nagłówki odpowiedzi katalogu z podpisem ważnym przez 24 godz..
  5. Przykładowe podpisane żądanie HTTP wraz z poleceniem curl oraz dokładną bazą podpisu (signature base).

Publikacja katalogu kluczy publicznych

Aby odbiorcy mogli zweryfikować podpis żądania, bot musi udostępnić swój klucz publiczny. Specyfikacja Web Bot Auth wymaga wystawienia pliku pod ścieżką /.well-known/http-message-signatures-directory w domenie określonej w nagłówku Signature-Agent.

Odpowiedź serwera powinna zwracać typ MIME application/http-message-signatures-directory+json. Sam plik katalogu musi być podpisany nagłówkami HTTP Message Signatures, co chroni go przed modyfikacją w pośredniczących pamięciach podręcznych. W środowisku produkcyjnym podpis ten generuje się dynamicznie lub odświeża cyklicznie, na przykład co 24 godz..

W katalogu można zdefiniować parametry ważności klucza, takie jak nbf (not before) oraz exp (expiration time), wybierając cykl rotacji na 30 dni, 90 dni lub 365 dni. Ułatwia to zaplanowaną wymianę kluczy kryptograficznych.

Mechanizm podpisywania żądań HTTP według RFC 9421

Podpisywanie wiadomości HTTP według standardu RFC 9421 polega na utworzeniu bazy podpisu (signature base), czyli ściśle sformatowanego ciągu tekstowego. W standardzie Web Bot Auth chronione komponenty obejmują identyfikator hosta docelowego @authority oraz nagłówek signature-agent wskazujący domenę bota.

Struktura bazy podpisu składa się z kolejnych wierszy zawierających nazwy komponentów i ich znormalizowane wartości. Na końcu dołączany jest wiersz @signature-params ze specyfikacją parametrów:

  • created: znacznik czasu UNIX momentu utworzenia podpisu.
  • expires: czas wygaśnięcia podpisu, domyślnie po 5 min.
  • keyid: unikalny identyfikator klucza JWK thumbprint.
  • alg: nazwa algorytmu kryptograficznego, czyli ed25519.
  • tag: etykieta protokołu o stałej wartości web-bot-auth.

Podpis binarny jest następnie kodowany w formacie base64 i przesyłany w nagłówku Signature.

Bezpieczeństwo i przetwarzanie kluczy w przeglądarce

Generator kluczy Web Bot Auth działa w całości po stronie klienta przy użyciu natywnego interfejsu Web Crypto API. Klucze kryptograficzne Ed25519 są generowane lokalnie w pamięci przeglądarki i nigdy nie są przesyłane na żaden zewnętrzny serwer.

Po odświeżeniu lub zamknięciu karty przeglądarki wygenerowany klucz prywatny bezpowrotnie znika. Dlatego po wygenerowaniu należy natychmiast skopiować lub pobrać klucz prywatny w formacie JWK lub PKCS#8 PEM i zapisać go w bezpiecznym menedżerze sekretów.

Nigdy nie wolno publikować klucza prywatnego ani ujawniać parametru d z obiektu JWK. W publicznym katalogu kluczy umieszcza się wyłącznie parametry klucza publicznego, czyli crv oraz x.

Tożsamość bota a reguły indeksowania w robots.txt

Wdrożenie Web Bot Auth rozwiązuje problem weryfikacji tożsamości bota, ale nie zastępuje reguł uprawnień. Podpis kryptograficzny potwierdza, do kogo należy dany crawler, natomiast zasady dotyczące tego, jakie podstrony robot może odwiedzać, określa plik robots.txt.

Twórcy agentów sztucznej inteligencji mogą wykorzystać generator robots.txt dla botów AI, aby przygotować oczekiwane dyrektywy dostępu dla konkretnych botów, a poprawność wdrożonych reguł zweryfikować za pomocą narzędzia tester robots.txt. Integracja uwierzytelniania Web Bot Auth z poprawnie skonfigurowanymi regułami dostępu pozwala uniknąć fałszywych blokad przez zapory sieciowe WAF i zapewnia pełną transparentność ruchu internetowego.

Najczęściej zadawane pytania.

Jak wdrożyć Web Bot Auth dla własnego bota indeksującego?

Konfigurację rozpoczyna się od wygenerowania pary kluczy za pomocą narzędzia Generator kluczy Web Bot Auth. Następnie należy opublikować plik JSON z kluczem publicznym pod adresem /.well-known/http-message-signatures-directory we własnej domenie z protokołem HTTPS. Podczas wysyłania zapytań bot podpisuje nagłówki kluczem prywatnym zgodnie ze standardem RFC 9421, co pozwala serwerom docelowym zweryfikować jego tożsamość bez polegania na łatwych do sfałszowania nagłówkach User-Agent.

Czy mój klucz prywatny trafia na serwer narzędzia?

Nie, klucz prywatny nigdy nie opuszcza przeglądarki. Cały proces kryptograficzny bazuje na natywnym interfejsie Web Crypto API w przeglądarce użytkownika. Po odświeżeniu lub zamknięciu karty wygenerowane klucze bezpowrotnie znikają z pamięci, dlatego należy pobrać klucz prywatny w formacie JWK lub PKCS#8 PEM i zapisać go w bezpiecznym menedżerze sekretów.

Czym jest identyfikator klucza i jak się go oblicza?

Identyfikator klucza, czyli parametr keyid, to unikalny skrót JWK Thumbprint obliczany według specyfikacji RFC 7638 oraz RFC 8037. Tworzy się go poprzez wyliczenie skrótu SHA-256 z kanonicznej postaci klucza publicznego JWK i zakodowanie wyniku w formacie base64url. Serwer docelowy używa tej wartości, aby odnaleźć odpowiedni klucz publiczny w opublikowanym katalogu kluczy. Do analizy zakodowanych danych tekstowych i tokenów przydatne może być narzędzie Base64 Encode.

Dlaczego standard Web Bot Auth wykorzystuje algorytm Ed25519?

Specyfikacja Web Bot Auth opiera się na Ed25519 ze względu na wysoki poziom bezpieczeństwa, kompaktowy rozmiar kluczy oraz deterministyczne i szybkie generowanie podpisów. W przeciwieństwie do starszych algorytmów RSA, Ed25519 minimalizuje narzut obliczeniowy oraz rozmiar nagłówków HTTP podczas masowego podpisywania żądań generowanych przez boty i agentów AI.

Jaki okres ważności klucza wybrać przy generowaniu konfiguracji?

Wybór okresu ważności zależy od przyjętej polityki rotacji kluczy w projekcie. Generator kluczy Web Bot Auth pozwala ustawić brak daty wygaśnięcia lub okres ważności wynoszący 30 dni, 90 dni albo 365 dni. Krótszy czas ważności zwiększa bezpieczeństwo w razie potencjalnego wycieku klucza prywatnego, lecz wymaga zautomatyzowanego procesu wdrażania nowych kluczy do katalogu na serwerze.

Czym różni się Web Bot Auth od weryfikacji na podstawie User-Agent lub adresów IP?

Nagłówek User-Agent można podrobić w każdym zapytaniu HTTP, a listy adresów IP bywają zawodne i trudne w utrzymaniu przy infrastrukturze chmurowej. Web Bot Auth zapewnia kryptograficzny dowód tożsamości poprzez podpisanie żądania nagłówkiem Signature zgodnie z RFC 9421. Serwer docelowy pobiera klucz publiczny bezpośrednio z domeny Signature-Agent i weryfikuje podpis matematycznie. Reguły indeksowania dla zweryfikowanych agentów można zdefiniować przez generator reguł dla robotów AI, a ich poprawność sprawdzić za pomocą testera plików robots.txt.

Czym jest baza podpisu HTTP i dlaczego jest tak istotna?

Baza podpisu to precyzyjnie sformatowany ciąg tekstowy tworzony ze wskazanego zestawu nagłówków i komponentów zapytania, takich jak @authority oraz signature-agent. Wszelkie rozbieżności w kolejności wierszy, spacjach lub wielkości liter między klientem a serwerem unieważniają podpis kryptograficzny. Wygenerowana przez narzędzie baza podpisu służy jako wzorzec referencyjny do debugowania własnych bibliotek podpisujących żądania HTTP.