Domain Name System (DNS) är ett av internets mest grundläggande protokoll. Det fungerar som internets telefonkatalog och översätter domännamn till IP-adresser.
Varje gång du ansluter till ett domännamn litar du på att DNS ger dig rätt IP-adress. Men DNS utvecklades i en tid då internet var en vänligare plats och protokollet saknar mekanismer för att verifiera att svaret verkligen stämmer.
Jag ska ge ett exempel
Jag äger domänen learntodefend.se och sätter upp en DNS-server för den. Därefter kontaktar jag min registrar och anger vilka namnservrar som är ansvariga för domänen.
När någon vill besöka min webbplats börjar det med att klienten frågar en resolver efter IP-adressen till www.learntodefend.se. Resolvern frågar först en root-server, men den har inte svaret utan hänvisar istället till namnservrarna för toppdomänen .se.
Resolvern frågar en av .se-servrarna. Den vet inte heller IP-adressen till www.learntodefend.se, men den vet vilka namnservrar som är ansvariga för domänen.
Till slut skickas frågan till min DNS-server, som svarar med den korrekta IP-adressen.

Men tänk om du sitter på ett osäkert nätverk. En angripare kanske manipulerar DNS-trafiken och svarar på dina förfrågningar med falska IP-adresser.
Du tror att du besöker min webbplats, men i själva verket hamnar du på en fejkad sida.

Det kanske inte är hela världen om en angripare skapar en fejkad version av min blogg. Men tänk om det till exempel hade varit din banks webbplats.
I varje steg litar resolvern på att den får rätt information, men det finns inget sätt att verifiera detta. Det är här DNSSEC kommer in.
Vad är DNSSEC?
Domain Name System Security Extensions (DNSSEC) är ett komplement till DNS som gör det möjligt att verifiera att DNS-svar är rätt.
DNSSEC löser detta genom att komplettera svaren med digitala signaturer.
Såhär fungerar det
När man aktiverar DNSSEC så genererar DNS-servern kryptografiska nycklar:
- En Key Signing Key (KSK)
- En eller två Zone Signing Key (ZSK)
Zone Signing Keys används för att signera zonens DNS-poster. Den privata delen av nycklarna skyddas noga och lämnar aldrig DNS-servern.
Den publika delen publiceras som DNSKEY-poster i zonen och används för att verifiera signaturer.
Om du är osäker på hur asymmetrisk kryptering med privat och publik nyckel fungerar har jag skrivit en separat artikel: En enkel guide till kryptering och digitala signaturer.
Du kan enkelt se hur en signerad post ser ut genom att använda kommandot dig och lägga till växeln +dnssec:

Utan DNSSEC skulle svaret bara innehålla första raden, dvs IP-adressen. Med DNSSEC får vi även en RRSIG-post som innehåller signaturen för A-posten.
RRSIG-posten innehåller även en del metadata:
| Fält | Beskrivning |
|---|---|
| IN | Klass (Internet) |
| RRSIG A | Den här signaturen gäller för A-posten |
| 8 | Algoritm (8 = RSA/SHA-256) |
| 3 | Antal etiketter i det signerade namnet.www.learntodefend.se har tre labels:* www * learntodefend * se |
| 3600 | TTL |
| 20260312000000 (expires) 20260219000000 (inception) | Signaturen är giltig: Från: 2026-02-19 00:00:00 UTC Till: 2026-03-12 00:00:00 UTC |
| 21120 | Key tag |
| H7GNG9nghg0+JcGAooZemjxeqLA1JbcMb2soDMhWf483ho8Mqvh2Z1W4HlXvJ08bTwJ0vUi6iAs… | Signatur (base64-kodad) |
Den långa base64-strängen är alltså signaturen för A-posten. Den har skapats med den privata delen av Zone Signing Key (ZSK) med key tag 21120.
Verifiera signaturen
För att verifiera signaturen behöver resolvern tillgång till den publika delen av nyckeln. Som jag skrev tidigare publiceras den som en DNSKEY-post. Du kan enkelt se dessa genom att använda kommandot dig och ange att du vill hämta poster av typen DNSKEY.

Med hjälp av den publika nyckeln kan resolvern verifiera RRSIG-posten och säkerställa att svaret är giltigt.
I DNSKEY-svaret ser vi två ZSK, en KSK och en RRSIG-post (den återkommer jag till strax).
Det är vanligt att ha två ZSK samtidigt under en period. Eftersom nycklarna roteras, publiceras den nya i förväg och börjar användas innan den gamla tas bort. På så vis kan man byta nyckel utan att något slutar fungera.
Även DNSKEY-posten innehåller en del intressant metadata:
| Fält | Beskrivning |
|---|---|
| IN | Klass (Internet) |
| DNSKEY | Detta är en publik DNSSEC-nyckel |
| 256 / 257 | Flagga som anger typ av nyckel * 256 = ZSK (Zone Signing Key) * 257 = KSK (Key Signing Key) |
| 3 | Protokoll (alltid 3 för DNSSEC) |
| 8 | Algoritm (8 = RSA/SHA-256) |
| AwEAAcZUV/6k73tmMwVhcD5J0WU0qL+IfBZEB7gfBYJXNyu3TYt3Zxg7B63+8b1AURngCa5cJG6… | Publik nyckel (base64-kodad) |
Genom att behandla DNSKEY-postens innehåll med en särskild algoritm (RFC 4034 Appendix B) kan man räkna fram ett 16-bitars värde som kallas key tag. Det är tack vare detta värde som resolvern vet vilken nyckel som ska användas för att validera signaturen i en RRSIG-post.
Men om en angripare kontrollerar zonen, kan den inte bara skapa egna nycklar?
Jo, om en angripare sätter upp en falsk DNS-server som den kontrollerar skulle den kunna skapa egna nycklar och signera falska svar. Därför räcker det inte att verifiera signaturen, utan vi måste även verifiera att själva nyckeln är rätt.
Det är här Key Signing Keys (KSK) kommer in i bilden.
När man aktiverar DNSSEC grupperas DNS-posterna efter typ i så kallade RRsets (Resource Record Sets). Ett RRset består av alla poster av samma typ och namn, till exempel alla MX-poster för en domän, eller alla DNSKEY-poster.
Det är dessa RRsets som signeras – inte varje enskild post individuellt.

De flesta RRsets i zonen signeras av den privata delen av ZSK (i denna bild den vita DNSKEY:n med ID 21120). Men DNSKEY-setet, alltså själva nycklarna, signeras av den privata delen av KSK (den grå DNSKEY:n med ID 12412).
Det betyder att om vi litar på KSK, då kan vi också lita på DNSKEY-setet, och därmed på ZSK.
Okej, men hur kan vi lita på KSK?
Nu börjar vi närma oss kärnan i DNSSEC, nämligen hur man bygger en chain of trust. Svaret är att förtroendet inte skapas i den egna DNS-servern – det skapas i föräldrazonen.
Man tar den publika delen av KSK och räknar ut ett hashvärde av denna. Detta hashvärde registreras sedan som en DS-post (Delegation Signer) i föräldrazonen, i detta fall .se.

DS-posten innehåller alltså inte själva nyckeln, utan bara ett kryptografiskt fingeravtryck av KSK.
För att se denna post kan vi återigen använda kommandot dig och ange att vi vill hämta poster av typen DS.

Posterna i bilden ovan ligger alltså i föräldrazonen .se. Och DS-postens key tag 12412 motsvarar key tag på vår KSK.
Postens värde är en hash av vår KSK och detta är enkelt att verifiera själv med verktyget dnssec-dsfromkey:
# Spara DNSKEY-poster till fil
> dig learntodefend.se DNSKEY > dnskey.txt
# Räkna ut hash från KSK i filen dnskey.txt
> dnssec-dsfromkey -f dnskey.txt learntodefend.se
learntodefend.se. IN DS 12412 8 2 8194D32EA0F45CCE32F11D3BB901D23D4B30DD02E1E994D56F37E7F8747A0DEB
Om vi tittar på svaret igen ser vi att även denna post är signerad med en RRSIG-post. Signaturen är skapad av en nyckel med key tag 65293, och eftersom signaturen kommer från föräldrazonen står det .se som signer istället för learntodefend.se.
Men var finns denna nyckel? Jo, den hittar vi genom att fråga föräldrazonen efter dess DNSKEY-poster.

Precis som i min egen zon är även föräldrazonens DNSKEY-poster signerade med en RRSIG-post. Och så fortsätter det hela vägen upp till root-zonen. På så sätt byggs en chain of trust – fiffigt värre!
Om du vill få en komplett översikt över DNSSEC-konfigurationen för din domän rekommenderar jag verktyget DNSViz.net, som både analyserar din zons konfiguration och skapar en överskådlig rapport:

Aktivera DNSSEC i praktiken
Nu när vi gått igenom hur DNSSEC fungerar tänkte jag visa hur man aktiverar det i praktiken.
Om din DNS-leverantör dessutom fungerar som din registrar är det oftast väldigt enkelt. I många fall räcker det att logga in i leverantörens portal och aktivera funktionen. Resten hanteras automatiskt:
- DNSSEC aktiveras för zonen
- ZSK och KSK genereras
- Zonens RRsets signeras
- En hash av den publika delen av KSK registreras i föräldrazonen som en DS-post
För domänen learntodefend.se använder jag Loopia både som DNS-leverantör och registrar. Då räcker det att logga in och klicka på ”Aktivera DNSSEC”.

Jag har även en annan domän där jag hanterar DNS via Cloudflare, medan Loopia fortfarande är min registrar. Där ser processen lite annorlunda ut.
Då behöver jag istället:
- Logga in i Cloudflares portal och aktivera DNSSEC.

- Eftersom Cloudflare inte är min registrar kan de inte uppdatera föräldrazonen automatiskt.
- Cloudflare räknar då ut en hash av min KSK och skapar en DS-post som jag får kopiera.
- Därefter loggar jag in hos Loopia, aktiverar DNSSEC och klistrar in DS-posten där.

Loopia registrerar DS-posten i .se-zonen och länkar ihop Cloudflares KSK med föräldrazonen.
Sammanfattning
Jag hoppas att den här genomgången har gjort att DNSSEC känns lite mindre mystiskt, och kanske till och med inspirerar några av er att aktivera det på er domän. DNSSEC är trots allt ett av de viktigaste protokollen för ett säkrare internet – men tyvärr något som hoppas över alldeles för ofta.
DNSSEC är egentligen inte särskilt svårt att använda. Absolut, en felaktig konfiguration kan få allvarliga konsekvenser (till exempel att resolvers slutar lita på dina DNS-svar), men så länge du är noggrann med att DS-posten registreras korrekt brukar de flesta DNS-servrar hantera resten automatiskt idag.
Har du egna erfarenheter av DNSSEC får du gärna dela med dig i kommentarerna.








