Välj språk

Nyckelgenerator för Web Bot Auth och RFC 9421

Skapa Ed25519-nyckelpar lokalt i webbläsaren med Web Crypto, komplett nyckelkatalog i JSON och färdiga exempel på signerade HTTP-anrop.

Web Bot Auth-nyckelgeneratorSå fungerar det ↓
Den https-origin som ska tillhandahålla din nyckelkatalog. Detta blir värdet för Signature-Agent-headern.
Används endast för det signerade exempelförfrågan nedan
Skriver nbf och exp till katalogposten

Nyckelparet skapas av webbläsarens Web Crypto API och lämnar aldrig denna sida. Om du laddar om sidan försvinner det, så ladda ner den privata nyckeln innan du lämnar.

Mehmet Demiray Publicerad Uppdaterad

Vad är Web Bot Auth och varför behövs det?

Traditionell identifiering av sökrobotar och automatiserade agenter har länge vilat på två metoder: strängen i HTTP-headern User-Agent samt listor över godkända IP-adresser. Båda mekanismerna har allvarliga brister. En User-Agent kan förfalskas av vem som helst på en bråkdel av en sekund, medan IP-validering kräver kontinuerlig omvänd DNS-uppslagning eller underhåll av statiska nätverksintervall som snabbt blir inaktuella när molninfrastrukturer förändras.

Web Bot Auth bygger på IETF-standarden RFC 9421 för HTTP Message Signatures. Standarden etablerar en kryptografisk modell där botoperatören signerar varje utgående HTTP-begäran med en privat nyckel. Webbservern som tar emot anropet hämtar motsvarande publika nyckel direkt från operatörens egen domän via en standardiserad katalog. Om signaturen stämmer finns ett matematiskt bevis på att anropet härstammar från den angivna källan.

Tekniken specificeras i pågående IETF Internet-Drafts och ger webbplatsägare möjlighet att selektivt tillåta verifierade AI-agenter och indexerare samtidigt som opålitliga aktörer blockeras. Genom att flytta verifieringen från godtyckliga textsträngar till asymmetrisk kryptografi minskar risken för identitetsstöld på webben avsevärt.

Detta skapar Web Bot Auth-nyckelgenerator

Vår Web Bot Auth-nyckelgenerator skapar ett komplett startpaket för att driftsätta kryptografisk signering enligt RFC 9421. Verktyget körs lokalt i din webbläsare med Web Crypto API och genererar ett asymmetriskt Ed25519-nyckelpar utan att skicka några uppgifter över nätverket.

Resultatet består av följande komponenter:

  • Nyckel-ID (Key ID): Ett unikt tumavtryck beräknat via SHA-256 och base64url enligt RFC 7638 och RFC 8037.
  • Nyckelkatalog i JSON-format: Den publika katalogstrukturen som ska placeras på din server under /.well-known/http-message-signatures-directory.
  • Svarsheaders för katalogen: Ett komplett exempel på hur servern ska svara när katalogen efterfrågas, inklusive katalogens egen signatur med en giltighet på 24 tim.
  • Privat nyckel: Den hemliga komponenten levererad i både JWK-format och PKCS#8 PEM-format för integrering i din applikationskod.
  • Publik nyckel: Den öppna komponenten i SPKI PEM-format.
  • Exempelanrop: Ett färdigt curl-kommando samt relevanta HTTP-headers som demonstrerar en korrekt signering med en giltighetstid på 5 min.
  • Signaturbas: Den exakta textsträng som genereras internt och signeras av kryptomotorn.

Publicering och underhåll av nyckelkatalogen

För att mottagande servrar ska kunna validera dina anrop måste den publika nyckeln göras tillgänglig på ditt https-ursprung. Sökvägen är strikt standardiserad till /.well-known/http-message-signatures-directory och måste returneras med mediatypen application/json.

Enligt specifikationen ska själva katalogresponsen också vara kryptografiskt signerad av ursprunget. Detta förhindrar manipulation i mellanliggande proxyservrar och CDN-nätverk. Den exempelheader som verktyget tillhandahåller inkluderar parametern expires beräknad till 24 tim framåt i tiden. I produktionsmiljö måste denna signatur genereras dynamiskt eller förnyas via schemalagda jobb.

Katalogen stöder även tidsstyrning via fälten nbf (not before) och exp (expires). Dessa fält möjliggör planerad nyckelrotation. Vid rotation publiceras den nya publika nyckeln i katalogen parallellt med den gamla under en övergångsperiod, varpå botens anrop gradvis ställs om till det nya nyckel-ID:t innan den gamla nyckeln avregistreras.

Så konstrueras och signeras ett HTTP-anrop

Signeringsprocessen enligt RFC 9421 bygger på att specifika delar av HTTP-meddelandet sammanställs till en deterministisk textsträng som kallas signaturbas. Om en enda byte skiljer sig mellan klientens beräkning och serverns rekonstruktion blir signaturen ogiltig.

I Web Bot Auth omfattar signaturbasen vanligtvis målserverns auktoritet (@authority) samt parametern signature-agent. Klienten konstruerar headern Signature-Input som definierar vilka komponenter som ingår och bifogar metadata:

  1. created: Unix-tidsstämpel för när signaturen skapades.
  2. expires: Tidsstämpel då signaturen upphör att gälla, exempelvis efter 5 min.
  3. keyid: Nyckelns tumavtryck som pekar ut rätt post i nyckelkatalogen.
  4. alg: Den kryptografiska algoritmen ed25519.
  5. tag: Strängen web-bot-auth som anger syftet med signaturen.

När signaturbasen har skapats körs den genom signeringsfunktionen med den privata Ed25519-nyckeln. Det resulterande binära värdet kodas med base64 och placeras i headern Signature. Mottagaren läser parametrarna, bygger upp exakt samma signaturbas och verifierar signaturen mot din publika nyckel.

Säkerhet och hantering av den privata nyckeln

Säkerheten i hela Web Bot Auth-ekosystemet bygger på att den privata nyckeln förblir strikt hemlig. Om en obehörig part får tillgång till nyckeln kan denne skicka godtyckliga anrop i din bots namn fram till dess att nyckeln roteras bort från katalogen.

Vår Web Bot Auth-nyckelgenerator är utformad med noll datainsamling som princip. Nyckelgenereringen sker helt asynkront i din lokala webbläsarsession via Web Crypto API. Ingen data skickas till externa servrar, och om du laddar om fliken raderas nyckeln permanent ur minnet.

När du har genererat ditt nyckelpar bör du omedelbart föra över den privata nyckeln till en säker hemlighetshanterare (Secrets Manager) eller krypterad miljövariabel i ditt produktionssystem. Den publika JSON-filen som placeras på webbservern får under inga omständigheter innehålla parametern d, eftersom d representerar själva nyckelhemligheten i JWK-strukturen.

Kombination med robots.txt och andra styrfiler

Det är viktigt att skilja på identitetsverifiering och åtkomstregler. Web Bot Auth ger endast ett kryptografiskt svar på frågan om vem som skickar en begäran. Standarden styr inte vilka resurser boten har tillstånd att läsa eller bearbeta.

För att styra botens beteende på webbplatsen kombineras signaturen med etablerade instruktionsfiler. Webbplatsägaren kan använda ett verktyg för robots.txt för att specificera vilka kataloger olika sökrobotar och AI-modeller får indexera. Reglerna kan därefter kontrolleras med en testare för robots.txt för att säkerställa att inga känsliga sektioner exponeras oavsiktligt.

När en bot identifierar sig via Web Bot Auth kan mottagaren mappa den verifierade domänen mot sina lokala policyer. En webbplats kan exempelvis välja att ge full tillgång till verifierade sökmotorer och akademiska forskningsagenter, samtidigt som oidentifierad skrapning begränsas via strikta hastighetsbegränsningar.

De frågor vi får oftast.

Hur implementerar jag Web Bot Auth för min sökrobot eller AI-agent?

För att implementera Web Bot Auth skapar du ett nyckelpar med Web Bot Auth-nyckelgenerator, publicerar den publika nyckelkatalogen under sökvägen /.well-known/http-message-signatures-directory på din domän och signerar varje utgående HTTP-begäran med din privata Ed25519-nyckel. Mottagande servrar hämtar katalogen och validerar anropets äkthet mot din publika nyckel.

Skickas min privata nyckel till er server under genereringen?

Nej, all kryptografisk bearbetning sker helt lokalt i din webbläsare via Web Crypto API. Ingen hemlig nyckel eller konfiguration överförs över nätverket. Om du lämnar eller laddar om sidan raderas nyckelparet omedelbart ur minnet, så spara dina PEM- eller JWK-filer på en säker plats.

Varför räcker det inte att identifiera botten med User-Agent eller IP-adresser?

En User-Agent-sträng kan förfalskas av vem som helst på ett ögonblick, vilket gör att illasinnade aktörer ofta utger sig för att vara legitima sökmotorer. Offentliga IP-listor är i sin tur stelbenta och svåra att hålla synkroniserade. Web Bot Auth bygger på RFC 9421 HTTP Message Signatures och ger ett matematiskt bevis på att anropet verkligen kommer från den aktör som kontrollerar den angivna domänen.

Vad är ett keyid och hur räknas det fram?

Värdet för keyid fungerar som ett unikt ID för den publika nyckeln i din katalog. Web Bot Auth använder ett JWK Thumbprint enligt standarderna RFC 7638 och RFC 8037, vilket skapas genom att beräkna en SHA-256-hash av nyckelns standardiserade JSON-fält och koda resultatet med base64url.

Ersätter signeringen i Web Bot Auth instruktionerna i robots.txt?

Nej, Web Bot Auth fungerar som identitetsbevis medan webbplatsens policyregler styr vad botten har behörighet att göra. Du kan anpassa robots.txt för AI-spindlar och använda ett verktyg för att testa robots.txt för att säkerställa att din bot respekterar webbplatsens direktiv efter att identiteten har verifierats.

Bör jag välja en specifik giltighetstid eller köra utan utgångsdatum?

Att sätta en giltighetstid på exempelvis 90 d eller 365 d tvingar fram goda rutiner kring nyckelrotation och minskar skadan om en privat nyckel skulle läcka. Om du saknar automatiserade rutiner för att uppdatera och driftsätta nya katalogfiler kan en nyckel utan utgångsdatum vara ett pragmatiskt val för att undvika oväntade avbrott.

Vad är signature base och varför är den så känslig för fel?

Signature base är den exakta textsträng som genereras utifrån valda HTTP-headers och parametrar innan den signeras kryptografiskt. Eftersom minsta avvikelse i radbrytning, blanksteg eller fältordning leder till en helt annan signatur är felaktigt uppbyggda bassträngar den vanligaste orsaken till att en mottagande server underkänner anropet.