Några snabba svar om vad SSL/TLS-certifikat är
Varför använder man SSL-certifikat?
SSL/TLS-certifikat ger kommunikation på internet två egenskaper.
- Avsändarens identitet
Om certifikatet innehåller namnet på den du kommunicerar med och din dator litar på den som utfärdat certifikatet, kan din dator lita på att du pratar med rätt webbserver. Dessutom signeras data du tar emot med certifikatet så att den inte kan manipuleras under överföringen. - Datasekretess
Två parter som aldrig har träffats kan upprätta en säker kanal över en osäker förbindelse (till exempel internet), utan att den som avlyssnar förbindelsen kan läsa det som skickas i den säkra kanalen.
Kryptering går att upprätta utan ett TLS-certifikat, men certifikatet är fortfarande det enda sättet att kontrollera att servern du kommunicerar med verkligen är rätt server.
Varför skulle internet inte fungera utan SSL/TLS?
Den enda tillgängliga krypteringsformen skulle vara symmetrisk kryptering, vilket innebär att parter som ska kommunicera säkert måste ha kommit överens om en hemlig kod i förväg, utan att skicka den över en osäker kanal som internet eller telefon.
Du skulle alltså behöva gå till banken, postkontoret, webbutiken, din arbetsplats och så vidare och komma överens om en kod med var och en, innan du kommunicerar med dem online.
Med alla andra skulle du inte kunna kommunicera säkert, eftersom alla försök att komma överens om en kod över internet kan avlyssnas. Och även om du byter en kod säkert med motparten kan du inte veta om det verkligen är rätt person du pratar med eller någon som sitter mellan er (man-in-the-middle).
Det skulle alltså inte gå att skapa konton på webbplatser, handla på eBay och Amazon, använda Facebook eller ange kortuppgifter på nätet.
Vem som helst skulle kunna avlyssna trafiken och få tag i andras koder, och ännu värre, utge sig för att vara någon annan.
Vad finns i ett SSL/TLS-certifikat?
Ett SSL/TLS-certifikat består alltid minst av en privat nyckel som bara ägaren känner till och en offentlig nyckel som alla har tillgång till.
Dessutom kan certifikatet innehålla information om:
- Vem certifikatet tillhör, till exempel FairSSL ApS eller Sole Viktor
- Vilka namn certifikatet gäller för, till exempel www.fairssl.se eller info@fairssl.se
- Vem som har utfärdat certifikatet och dess signatur, till exempel GlobalSign med en SHA256-signatur
- Var man kan hämta en kopia av utfärdarens certifikat med dess offentliga nyckel, vanligtvis en URL eller en lokal sökväg
- Var man kan kontrollera om certifikatet har blivit återkallat (CRL/OCSP)
- För vilka ändamål certifikatet får användas, till exempel kryptering av e-post, signering av program, serverkommunikation, klientkommunikation eller utfärdande av nya certifikat
- Under vilken period certifikatet är giltigt
Varför har SSL-certifikat ett utgångsdatum?
Certifikat löper ut bland annat för att minska den tid en angripare har på sig att knäcka nyckeln.
Det gör också att certifikat med brister som upptäcks i efterhand byts ut snabbare.
Det kan också begränsa hur länge ett förlorat eller stulet certifikat kan användas, men den effekten är mest teoretisk, eftersom några timmars missbruk kan räcka för att orsaka stor skada.
Vad är skillnaden mellan ett certifikat utfärdat av en betrodd CA, en intern CA och ett självsignerat certifikat?
- Betrodd offentlig CA
Ett certifikat utfärdat av en betrodd CA, till exempel Comodo, är signerat av ett certifikat som i sin tur är utfärdat av ett betrott rotcertifikat. Rotcertifikatet är förinstallerat i klienterna av till exempel Nokia, Microsoft och Sony. En betrodd CA måste följa en lång rad strikta regler, bland annat de som CA/Browser Forum fastställer. - Intern CA
Fungerar på samma sätt, och certifikatet är utfärdat av ett mellanliggande certifikat eller ett rotcertifikat. Skillnaden är att rotcertifikatet måste installeras på varje dator eller mobiltelefon som ska lita på det, till exempel av företagets IT-avdelning. - Självsignerat certifikat
Certifikatet är bara betrott på klienter där en kopia av det har installerats.
Hur hänger HTTP, HTTPS och certifikat ihop?
HTTP är ett protokoll som bestämmer hur en webbläsare och en webbserver kommunicerar.
HTTPS är HTTP med ett SSL/TLS-lager runt, som skyddar kommunikationen.
Webbläsaren använder SSL/TLS för att kontrollera:
- Att certifikatet är signerat av en kedja av certifikat som slutar med ett rotcertifikat installerat på klienten
- Att certifikatet fortfarande är giltigt och inte har återkallats
- Att certifikatet innehåller ett SAN DNS/IP-namn som matchar servern man kommunicerar med
- Att webbläsaren och webbservern kan komma överens om en hemlighet som används för att kryptera kommunikationen
Finns det en koppling mellan certifikat och krypterad dataöverföring?
SSL/TLS-certifikat används vid kryptering för att utbyta en slumpmässig nyckel, som krypteras med certifikatets offentliga nyckel och sedan används för att kryptera själva datan.
Vid asymmetrisk kryptering använder klienten certifikatets offentliga nyckel för att kryptera en slumpmässig hemlighet, som bara servern kan dekryptera med sin privata nyckel.
Förenklat sker följande steg i en webbläsare:
- Webbläsaren använder webbserverns offentliga nyckel (som alla har tillgång till) för att kryptera en hemlighet som den själv har genererat.
- Webbservern dekrypterar sedan hemligheten med hjälp av sin privata nyckel (som bara den har).
- Nu har både webbservern och webbläsaren samma hemlighet, utan att någon annan har kunnat läsa den.
- Därefter byter de till snabbare symmetrisk kryptering och använder samma hemlighet för att kryptera och dekryptera informationen.
Med asymmetrisk kryptering och SSL/TLS-certifikatet kan klienten skicka en hemlighet till webbservern som bara servern kan läsa. Därefter används inte certifikatet för själva krypteringen (säker e-post är undantaget), utan snabbare symmetrisk kryptering.
Varför kallas krypteringen SSL, TLS eller SSL/TLS?
Kryptering på nätet kallas ofta SSL (Secure Sockets Layer), eftersom det var det första protokollet som fick bred användning. Protokollet som används i dag är TLS (Transport Layer Security), en vidareutveckling av SSL 3.0.