Senast uppdaterad:
Meningen med Let’s Encrypt och ACME-protokollet är att göra det möjligt att sätta upp en HTTPS-server som automatiskt erhåller ett certifikat som webbläsare litar på utan någon mänsklig handpåläggning. Detta görs genom att köra en certifikathanteringsagent på webbservern.
För att förstå hur tekniken fungerar så låt oss gå igenom processen för att sätta upp https://example.com/
med en certifikathanteringsagent som stöder Let’s Encrypt.
Denna process består av två steg. Först och främst bevisar agenten för CA:n att webbservern kontrollerar domänen. Sedan kan agenten begära, förnya och återkalla certifikat för den domänen.
Domänvalidering
Let’s Encrypt identifierar systemadministratören genom en publik nyckel. Första gången agentmjukvaran interagerar med Let’s Encrypt genererar den ett nyckelpar och bevisar för Let’s Encrypt-CA:n att servern kontrollerar en eller flera domäner. Detta kan likställas med den traditionella CA-processen för att skapa ett konto och lägga till domäner till det kontot.
För att påbörja processen frågar agenten Let’s Encrypt-CA:n vad den behöver göra för att bevisa att den kontrollerar example.com
. Let’s Encrypt-CA:n kommer att titta på domännamnet som efterfrågas och utfärda en eller flera utmaningar. Det finns flera sätt som agenten kan bevisa kontroll över domänen. Till exempel kan CA:n ge agenten ett val att antingen:
- lägga till en DNS-post under
example.com
eller - placera en HTTP-resurs under en välkänd URI på
http://example.com/
Tillsammans med utmaningen tillhandahåller Let’s Encrypt-CA:n ett engångsvärde som agenten måste signera med sin privata nyckel för att bevisa att den kontrollerar nyckelparet.
Agentmjukvaran utför en av de givna utmaningarna. Låt oss anta att den kan genomföra den andra uppgiften ovan: den skapar en fil på en efterfrågad sökväg på sajten http://example.com
. Agenten signerar också det givna engångsvärdet med sin privata nyckel. När agenten väl slutfört dessa steg meddelar den CA:n att den är redo att slutföra valideringen.
Sen är det CA:ns jobb att kontrollera att utmaningarna har blivit tillfredsställda. CA:n verifierar engångsvärdets signatur och försöker ladda ner filen från webbservern och säkerställa att den har det förväntade innehållet.
Om engångsvärdets signatur är korrekt och utmaningarna överensstämmer är agenten, som är identifierad med den publika nyckeln, godkänd att utföra certifikathantering för example.com
. Vi kallar nyckelparet som agenten använde för “behörigt nyckelpar” för example.com
.
Certifikatutfärdande och -återkallande
Så fort agenten har ett behörigt nyckelpar är det lätt att begära, förnya och återkalla certifikat — bara skicka certifikathanteringsmeddelanden och signera dem med det behöriga nyckelparet.
För att erhålla ett certifikat för domänen konstruerar agenten en PKCS#10-begäran om certifikatutfärdande (CSR) som ber Let’s Encrypt-CA:n att utfärda ett certifikat för example.com
med en specifik publik nyckel. Som vanligt inkluderar en CSR en signering av den privata nyckeln som hör till den publika nyckeln i CSR:en. Agenten signerar även hela CSR:en med den behöriga nyckeln för example.com
så att Let’s Encrypt-CA:n vet att den är behörig.
När Let’s Encrypt-CA:n tar emot förfrågan verifierar den båda signaturerna. Om allt ser bra ut utfärdar den ett certifikat för example.com
med den publika nyckeln från CSR:en och skickar tillbaka det till agenten.
Återkallande fungerar på ett liknande sätt. Agenten signerar en begäran om återkallelse med det behöriga nyckelparet för example.com
och Let’s Encrypt-CA:n verifierar att begäran är behörig. I så fall publicerar den återkallelseinformation i de vanliga kanalerna för detta (såsom OCSP), så att de beroende parterna som webbläsare får reda på att de inte ska acceptera det återkallade certifikatet.