ACME
ACME-protokollet (Automatic Certificate Management Environment) är en öppen internetstandard som möjliggör helt automatiserat utfärdande, förnyelse och återkallande av SSL-certifikat. Tack vare ACME kan webbservrar själva begära certifikat och automatiskt förnya dem utan manuellt ingripande från administratören. ACME-klientimplementationer automatiserar och förenklar avsevärt certifikathanteringen i en tid då nya standarder gradvis förkortar giltighetstiden för SSL/TLS-certifikat till högst 47 dagar fram till 2029.
Innehåll i artikeln
- Vad är ACME-protokollet?
- Hur fungerar ACME?
- Typer av ACME-utmaningar
- ACME-klienter – översikt över verktyg
Vad är ACME-protokollet?
ACME är ett protokoll som definieras i RFC 8555 (publicerat 2019), som standardiserar kommunikationen mellan en klient (webbserver eller verktyg för certifikathantering) och en certifikatutfärdare (CA). Det utformades och populariserades ursprungligen av certifikatutfärdaren Let's Encrypt, som utfärdar gratis DV-certifikat via ACME.
Protokollet fungerar enligt principen challenge – response: klienten bevisar för certifikatutfärdaren (CA) att den faktiskt kontrollerar domänen som den begär ett certifikat för. Vid lyckad verifiering utfärdar CA automatiskt certifikatet. Hela processen tar mycket kort tid.
Förkortningen ACME står för Automatic Certificate Management Environment.
Hur fungerar ACME?
Kommunikationen mellan ACME-klienten och certifikatutfärdaren (CA) sker uteslutande via HTTP REST API. Klienten och CA utbyter meddelanden i JSON-format. Hela processen kan sammanfattas i följande steg.
- Aktivering av konto – ACME-klienten ansluter till CA med hjälp av EAB-uppgifter (external account binding). Skickar Key identifier (KID) och HMAC-nyckel.
- Certifikatbegäran (Order) – Klienten skickar CA en lista över domäner som den begär ett certifikat för. CA returnerar en lista över utmaningar som klienten måste slutföra för varje domän.
- Slutförande av utmaningen (Challenge) – Klienten väljer en av de erbjudna utmaningstyperna (HTTP-01, DNS-01, TLS-ALPN-01) och utför den nödvändiga åtgärden – placerar en token på servern eller anger en DNS-post.
- Verifiering av CA – CA verifierar automatiskt om utmaningen har slutförts (besöker URL:en, verifierar DNS-posten osv.). Lyckad verifiering bekräftar domänauktoriseringen.
- Utfärdande av certifikat – Klienten skickar en certifikatbegäran (CSR). CA signerar certifikatet och skickar tillbaka det till klienten i PEM-format.
- Automatisk förnyelse – ACME-klienten ställer in regelbunden förnyelse i sin konfiguration. Certifikatet förnyas vanligtvis i god tid före utgången för att förhindra HTTPS-avbrott.
Typer av ACME-utmaningar
För att certifikatutfärdaren (CA) ska kunna verifiera att sökanden faktiskt kontrollerar domänen erbjuder ACME-protokollet tre standardiserade utmaningstyper:
HTTP-01
ACME-klienten placerar en särskild fil (token) på webbservern i katalogen /.well-known/acme-challenge/. CA verifierar sedan dess tillgänglighet via HTTP på port 80. Detta är den vanligaste verifieringsmetoden.
Begränsningar: Fungerar inte för WildCard-certifikat. Domänen måste vara offentligt tillgänglig på port 80.
DNS-01
Klienten skapar en särskild TXT-post i domänens DNS i formen _acme-challenge.domenaxyz.cz med en unik token från CA. CA verifierar posten via DNS. Denna verifieringsmetod gör det möjligt att erhålla ett WildCard-certifikat.
Begränsningar: Kräver åtkomst till domänens DNS-poster. Kan vara långsammare på grund av spridning av DNS-ändringar.
TLS-ALPN-01
Verifieringen sker via TLS på port 443 med hjälp av ALPN-tillägget (Application-Layer Protocol Negotiation). Klienten gör tillfälligt ett särskilt certifikat med ACME-token tillgängligt.
Begränsningar: Kan vara komplicerat för vissa hostingmiljöer.
ACME-klienter – översikt över verktyg
Det finns ett brett utbud av färdiga verktyg för att arbeta med ACME-protokollet.
Certbot
Den mest populära ACME-klienten från EFF.org. Automatisk integration med Apache och Nginx. Stöd för Linux och macOS. Certbot är ett vanligt använt och väldokumenterat verktyg som erbjuder enkla kommandon för att erhålla och förnya certifikat. Det har även omfattande stöd för olika webbservrar och hostingmiljöer.
acme.sh
En minimalistisk ACME-klient skriven i shell med stöd för över 150 DNS-leverantörer. Linux, macOS, FreeBSD. acme.sh fokuserar på enkelhet och bred kompatibilitet.
win-acme
En ACME-klient för Windows med IIS-integration. Stöder både GUI och kommandorad. win-acme är idealisk för att hantera certifikat på Windows-servrar, särskilt med IIS.
Lego
En ACME-klient skriven i Go. Lämplig för anpassad integration och skriptning. Lego är en flexibel ACME-klient som enkelt kan integreras i anpassade system och skript tack vare sin implementation i programmeringsspråket Go.
Vart går du härnäst?
Tillbaka till Hjälp
Hittat ett fel eller förstår du inte något? Skriv till oss!
