Taal kiezen

Web Bot Auth Sleutelgenerator voor HTTP Signatures

Genereer Ed25519-sleutelparen, JWK-bestanden en HTTP Message Signatures directory-JSON direct in je browser via Web Crypto.

Web Bot Auth SleutelgeneratorHoe het werkt ↓
De https-origin die uw sleutelmap zal hosten. Dit wordt de waarde van de Signature-Agent header.
Alleen gebruikt voor het onderstaande ondertekende voorbeeldverzoek
Schrijft nbf en exp naar het mapitem

Het sleutelpaar wordt aangemaakt door de Web Crypto API van uw browser en verlaat deze pagina nooit. Vernieuwen wist de sleutels, dus download de privésleutel voor vertrek.

Mehmet Demiray Gepubliceerd Bijgewerkt
Delen

Wat is Web Bot Auth?

Het identificeren van geautomatiseerde webbezoekers, zoals zoekmachinecrawlers en AI-agents, steunt traditioneel op twee mechanismen: de User-Agent header en IP-adreslijsten. Beide methoden vertonen fundamentele zwaktes. Een User-Agent kan door elke willekeurige client worden nagebootst, terwijl IP-reeksen continu veranderen, duur zijn om te onderhouden en kwetsbaar blijven voor configuratiefouten.

Web Bot Auth introduceert een cryptografische standaard om dit probleem op te lossen. Het protocol is gebaseerd op de standaarden voor HTTP Message Signatures (RFC 9421). In plaats van blind te vertrouwen op niet-gecontroleerde tekstvelden, ondertekent de crawler elk HTTP-verzoek met een asymmetrische privésleutel (standaard Ed25519). De ontvangende webserver controleert de meegestuurde handtekening aan de hand van een openbare sleutel die wordt gepubliceerd op het HTTPS-domein van de bot-operator.

Het protocol bevindt zich in de IETF Internet-Draft fase, maar wordt breed omarmd door zoekmachines, AI-platforms en hostingproviders. Doordat de cryptografische identiteit rechtstreeks aan een geverifieerde domeinnaam is gekoppeld, kunnen websites betrouwbare bots direct onderscheiden van kwaadwillige scrapers zonder complexe IP-filters.

Wat de Web Bot Auth Sleutelgenerator oplevert

De Web Bot Auth Sleutelgenerator levert een compleet pakket met alle benodigde configuratiebestanden en voorbeelden om Web Bot Auth direct te implementeren. De generator maakt gebruik van de Web Crypto API in de browser om een Ed25519-sleutelpaar aan te maken en berekent alle afgeleide waarden:

  1. Sleutel-ID (Key ID): De SHA-256 JWK-thumbprint van de openbare sleutel volgens RFC 7638 en RFC 8037, gecodeerd in base64url. Dit ID identificeert de sleutel uniek in het sleuteloverzicht.
  2. Sleuteloverzicht (Directory JSON): Het JSON-bestand dat gepubliceerd dient te worden op het pad /.well-known/http-message-signatures-directory. Dit bestand bevat uitsluitend de openbare sleutelgegevens, inclusief optionele geldigheidsdata.
  3. Directory response headers: Een voorbeeld van de HTTP-headers waarmee het sleuteloverzicht moet worden geserveerd, inclusief een handtekening met een geldigheid van 24 uur.
  4. Sleutelbestanden: De privésleutel in JWK- en PKCS#8 PEM-formaat voor gebruik in bot-software, plus de openbare sleutel in SPKI PEM-formaat.
  5. Voorbeeldverzoek en handtekeningbasis: Een compleet curl-commando met de headers Signature-Input, Signature en Signature-Agent, samen met de exacte handtekeningbasis (signature base) voor debugging.

Het publiceren van het sleuteloverzicht

Om ontvangende webservers in staat te stellen handtekeningen te valideren, moet de beheerder van de bot het sleuteloverzicht publiceren op een vastgesteld pad: /.well-known/http-message-signatures-directory onder het HTTPS-domein van de bot.

Het sleuteloverzicht bevat een verzameling openbare sleutels (JWKS). Elke sleutel in het overzicht kan worden voorzien van parameters voor levenscyclusbeheer:

  • nbf (Not Before): Unix-tijdstempel in seconden vanaf wanneer de sleutel als geldig mag worden beschouwd.
  • exp (Expires): Unix-tijdstempel waarop de sleutel verloopt.
Geldigheidsduur Toepassing Beheerslast
Geen verloopdatum Testomgevingen en interne projecten Laag
30 dagen Strikte beveiligingsomgevingen Hoog (continue rotatie)
90 dagen Aanbevolen balans tussen veiligheid en onderhoud Gemiddeld
365 dagen Grote productiesystemen met jaarlijkse rotatie Laag

Volgens de Web Bot Auth specificatie moet de respons van het sleuteloverzicht zelf ook cryptografisch ondertekend zijn. Dit voorkomt dat aanvallers het overzicht manipuleren of oude sleutelbestanden cachen.

Hoe een HTTP-verzoek cryptografisch wordt ondertekend

Het ondertekenen van een HTTP-verzoek volgens RFC 9421 vereist een strikte opbouw van headers. De bot voegt drie centrale headers toe aan elk uitgaand verzoek:

  1. Signature-Agent: Het basis-HTTPS-domein van de bot-operator waar het sleuteloverzicht te vinden is.
  2. Signature-Input: Bevat de metadata van de handtekening, waaronder de gedekte headers (@authority, signature-agent), het sleutel-ID (keyid), het algoritme (ed25519), de aanmaaktijd (created), de vervaltijd (expires, doorgaans na 5 min) en de tag web-bot-auth.
  3. Signature: De daadwerkelijke cryptografische Ed25519-handtekening, gecodeerd als binaire gegevens in gestructureerde velden.

De ondertekening gebeurt over de zogeheten handtekeningbasis (signature base). Dit is een genormaliseerde tekststring waarin de geselecteerde componenten en hun waarden regel voor regel worden geformatteerd:

"@authority": example.com
"signature-agent": https://bot.example.nl
"@signature-params": ("@authority" "signature-agent");created=1710000000;expires=1710000300;keyid="...";alg="ed25519";tag="web-bot-auth"

Elke afwijking in spaties, hoofdletters of regeleinden tussen de client en de server resulteert in een ongeldige handtekening. Voor het coderen en decoderen van meegestuurde tokens kan een Base64 encoder nuttig zijn tijdens het ontwikkelproces.

Veilig beheer van de privésleutel

De betrouwbaarheid van Web Bot Auth staat of valt met de geheimhouding van de privésleutel. De Web Bot Auth Sleutelgenerator voert alle cryptografische berekeningen lokaal uit via de Web Crypto API van de browser. Er worden geen sleutels, domeinen of metadata naar een externe server verzonden.

Omdat de sleutels uitsluitend in het tijdelijke werkgeheugen van de browser bestaan, gaan alle gegenereerde gegevens definitief verloren zodra de pagina wordt vernieuwd of gesloten. Volg daarom direct na het genereren deze stappen voor veilig sleutelbeheer:

  • Sla de privésleutel (PKCS#8 PEM of JWK) direct op in een beveiligde kluis of Secret Manager (zoals HashiCorp Vault, AWS Secrets Manager of Azure Key Vault).
  • Publiceer onder geen enkele voorwaarde de parameter d uit het JWK-formaat. Dit veld bevat het geheime sleutelmateriaal en hoort uitsluitend thuis in de runtime-omgeving van de bot.
  • Gebruik in het openbare bestand /.well-known/http-message-signatures-directory uitsluitend het openbare deel (met parameters kty, crv en x).
  • Hanteer een geautomatiseerd rotatieschema waarbij nieuwe sleutels worden gepubliceerd voordat de oude sleutels verlopen.

Identificatie koppelen aan webbeheer en regels

Cryptografische authenticatie via Web Bot Auth beantwoordt uitsluitend de vraag wie het verzoek verstuurt, niet wat de bot mag bezoeken. De identificatie vormt de eerste stap in een bredere beheerstructuur voor webcrawlers.

Nadat een webserver de handtekening van een crawler heeft geverifieerd via het sleuteloverzicht, kan de server bepalen welke toegangsregels van toepassing zijn. Deze regels worden traditioneel vastgelegd in het robots.txt-bestand op de server. Met een robots.txt generator voor AI-crawlers kunnen beheerders specifieke instructies opstellen voor geverifieerde agents.

Om te controleren of de ingestelde restricties en paden correct functioneren voor verschillende user-agents, kan een robots.txt tester worden ingezet. Door cryptografische verificatie met Web Bot Auth te combineren met duidelijke richtlijnen in robots.txt, ontstaat een robuust ecosysteem waarin legitieme bots gegarandeerde toegang krijgen en ongewenste scrapers effectief worden geweerd.

De vragen die we het vaakst beantwoorden.

Hoe stel ik Web Bot Auth in voor mijn crawler of AI-agent?

U genereert een Ed25519-sleutelpaar met de Web Bot Auth Sleutelgenerator, publiceert de publieke sleutel in een JSON-bestand op uw eigen domein onder /.well-known/http-message-signatures-directory en ondertekent vervolgens elk uitgaand HTTP-verzoek met uw privésleutel. Webservers kunnen uw identiteit direct verifiëren. Controleer daarnaast via een robots.txt tester of uw bot aan de juiste toegangsregels van doelwebsites voldoet.

Wordt mijn gegenereerde privésleutel naar een externe server verstuurd?

Nee, de Web Bot Auth Sleutelgenerator gebruikt uitsluitend de ingebouwde Web Crypto API van uw browser. Alle sleutelparen, thumbprints en voorbeeldhandtekeningen worden lokaal op uw eigen apparaat berekend. Zodra u de pagina vernieuwt of sluit, verdwijnen de sleutels definitief uit het browsergeheugen.

Wat is het voordeel van Web Bot Auth ten opzichte van User-Agent headers en IP-whitelists?

User-Agent headers kunnen door iedereen worden nagebootst en IP-reeksen veranderen regelmatig in moderne cloudomgevingen. Web Bot Auth biedt cryptografisch bewijs via HTTP Message Signatures volgens RFC 9421. Een ontvangende server weet daardoor met zekerheid dat een verzoek afkomstig is van de eigenaar van het domein. Dit vormt een betrouwbare aanvulling op regels die beheerders opstellen via een robots.txt generator voor AI-crawlers.

Wat is de key ID en hoe wordt deze berekend?

De key ID is de unieke identificatie van uw publieke sleutel. Deze wordt berekend als een RFC 7638 JWK-thumbprint: een SHA-256 hash van de canonieke JSON Web Key, gecodeerd in Base64URL zonder padding. De ontvangende webserver gebruikt deze identifier om de juiste publieke sleutel in uw gepubliceerde directory te lokaliseren.

Waarom gebruikt Web Bot Auth specifiek Ed25519-sleutels?

Ed25519 is vastgelegd in de IETF-specificaties voor Web Bot Auth vanwege de hoge cryptografische veiligheid, compacte sleutellengte en zeer snelle, deterministische verwerking. Dit minimaliseert de rekenkracht die crawlers en ontvangende webservers nodig hebben voor het ondertekenen en verifiëren van grote volumes HTTP-verzoeken.

Wat is de signature base en waarom is deze belangrijk bij het oplossen van fouten?

De signature base is de exacte, gestandaardiseerde tekst die volgens RFC 9421 wordt samengesteld uit geselecteerde HTTP-headers, pseudovelden zoals @authority en parameters. De minste afwijking in witruimte, hoofdlettergebruik of regelvolgorde zorgt ervoor dat de cryptografische handtekening ongeldig wordt verklaard. De generator toont de exacte signature base als referentie voor uw eigen software.

Kies ik het beste voor een vaste geldigheidstermijn of een sleutel zonder verloopdatum?

Een geldigheidstermijn van bijvoorbeeld 90 dag of 365 dag dwingt regelmatige sleutelrotatie af, wat het risico bij een eventueel uitgelekte privésleutel beperkt. Kiest u voor geen verloopdatum, dan blijft de sleutel geldig totdat u deze handmatig uit uw directory verwijdert. Voor productieomgevingen biedt periodieke rotatie de hoogste veiligheid.

Ik heb de pagina vernieuwd en de sleutel is weg. Kan ik deze terughalen?

Nee, omdat er uit privacyoverwegingen niets op een server of in lokale cookies wordt opgeslagen, is de sleutel definitief gewist. U kunt met de Web Bot Auth Sleutelgenerator direct een nieuw sleutelpaar aanmaken en het bijbehorende JSON-bestand bijwerken op uw server.