Så fungerar ACME-protokollet
ACME (Automated Certificate Management Environment) definieras i RFC 8555 och automatiserar hela certifikatlivscykeln: kontoregistrering, domänvalidering, certifikatutfärdande och förnyelse. Denna sida förklarar protokollets tekniska flöde steg för steg.
ACME-protokollets livscykel
Ett ACME-flöde har sex faser. All kommunikation sker över HTTPS med JSON-payloads signerade via JWS (RFC 7515).
1 Directory och Nonce
Innan klienten kan skicka requests hämtar den serverns
directory-objekt.
Directory innehåller URL:er till alla ACME-endpoints: newNonce, newAccount, newOrder,
revokeCert, keyChange och metadata som termsOfService och externalAccountRequired.
Klienten hämtar därefter en replay-nonce via ett HEAD-request till newNonce-URL:en.
Noncen inkluderas i JWS-headern på alla efterföljande POST-requests för att förhindra replay-attacker.
Servern returnerar en ny nonce i Replay-Nonce-headern på varje svar, så klienten alltid har en färsk nonce redo.
# Hämta directory GET https://fairssl.dk/acme { "newNonce": "https://fairssl.dk/acme/v1/new-nonce", "newAccount": "https://fairssl.dk/acme/v1/new-account", "newOrder": "https://fairssl.dk/acme/v1/new-order", "keyChange": "https://fairssl.dk/acme/v1/key-change", "revokeCert": "https://fairssl.dk/acme/v1/revoke-cert", "renewalInfo": "https://fairssl.dk/acme/v1/renewal-info", "meta": { "termsOfService": "https://www.fairssl.dk/en/terms-of-sale/", "externalAccountRequired": true } } # Hämta första nonce HEAD https://fairssl.dk/acme/v1/new-nonce → Replay-Nonce: oFvnlFP1wIhRlYS2jTaXbA
renewalInfo i directory. FairSSL ACME-servern annonserar ARI (RFC 9773) direkt i directory-objektet. Klienter som stödjer ARI använder denna URL för att fråga om optimal förnyelsestidpunkt.
2 Kontoregistrering (newAccount)
ACME-klienten skapar ett konto på ACME-servern genom att skicka ett newAccount-request. Klienten genererar ett asymmetriskt nyckelpar (typiskt ECDSA P-384 eller RSA 3072+). Den offentliga nyckeln skickas till servern som en JWK (JSON Web Key), och alla efterföljande requests signeras med den privata nyckeln via JWS.
Nyckeln är kontots identitet. ACME-servern svarar med en konto-URL som klienten använder i alla efterföljande requests. Om nyckeln redan är registrerad returnerar servern det befintliga kontot.
EAB: External Account Binding
FairSSL och andra kommersiella ACME-servrar använder EAB
(RFC 8555 §7.3.4)
för att binda ACME-kontot till ett befintligt kundkonto. Vid kontoregistrering inkluderar klienten ett
externalAccountBinding-fält med:
- Key ID (kid): identifierar ditt FairSSL-konto
- HMAC Key: en delad hemlighet för att signera bindningen
Båda genereras i FairSSL-portalen under ACME-inställningar.
Exempel: newAccount request
POST /acme/new-account Content-Type: application/jose+json { "protected": "...base64url(header)...", "payload": "...base64url({ "termsOfServiceAgreed": true, "contact": ["mailto:admin@ditt-doman.se"], "externalAccountBinding": {...} })...", "signature": "...JWS..." }
Kontonyckeln är inte certifikatnyckeln. ACME-kontonyckeln används för att autentisera requests. Certifikatnyckeln genereras separat och skickas i CSR-steget (steg 5). Det är två oberoende nyckelpar.
3 Skapa order (newOrder)
Klienten skickar ett
newOrder-request
med en lista av domännamn (identifiers). Servern returnerar en order med status pending och en lista av
authorization-URL:er, en per domännamn.
// newOrder request payload { "identifiers": [ { "type": "dns", "value": "ditt-doman.se" }, { "type": "dns", "value": "www.ditt-doman.se" } ] } // Serversvar { "status": "pending", "expires": "2026-03-19T12:00:00Z", "authorizations": [ "https://acme.fairssl.dk/acme/authz/abc123", "https://acme.fairssl.dk/acme/authz/def456" ], "finalize": "https://acme.fairssl.dk/acme/order/xyz/finalize" }
Ordertillstånd
En order går igenom följande tillstånd (definierade i RFC 8555 §7.1.6):
pending: väntar på valideringar. ready: alla domäner validerade, redo för finalize.
processing: CA:n signerar certifikatet. valid: certifikatet är redo för nedladdning.
Ordern kan också gå till invalid (validering misslyckades) eller expired (timeout).
4 Domänvalidering (challenges)
För varje domän hämtar klienten en authorization som innehåller en eller flera challenges.
Klienten väljer en challenge-typ, besvarar den, och meddelar ACME-servern att den är redo.
CA:n verifierar svaret och markerar authorization som valid.
HTTP-01
Klienten placerar en fil under /.well-known/acme-challenge/ på port 80.
CA:n hämtar filen via HTTP GET.
- Port 80 måste vara öppen
- Inga redirects tillåtna
- Kan inte användas för wildcards
- Varje SAN-namn valideras separat
DNS-01
Klienten skapar en TXT-post _acme-challenge.domän med en SHA-256-hash av token + account key.
- Inga öppna portar nödvändiga
- Fungerar bakom brandväggar
- Stödjer wildcards
- Kan delegeras via CNAME
TLS-ALPN-01
Klienten serverar ett självsignerat certifikat med acmeIdentifier-extension på port 443 via ALPN (RFC 8737).
- Port 443 måste kontrolleras tillfälligt
- Används sällan i praktiken
- Kan inte användas för wildcards
För en detaljerad genomgång av varje valideringsmetod med exempel och felsökning, se vår guide till ACME-validering: HTTP-01, DNS-01 och TLS-ALPN-01.
5 Finalize: CSR och certifikatsignering
När alla authorizations är valid skiftar ordern till ready. Klienten skickar nu ett finalize-request
med en CSR (Certificate Signing Request) i DER-format, base64url-kodad.
CSR:en innehåller den offentliga nyckeln för certifikatet (inte account-nyckeln) och de önskade domännamnen som Subject Alternative Names.
ACME-servern verifierar att domännamnen i CSR:en matchar dem i ordern, vidarebefordrar till CA:n för signering, och ordern
skiftar till processing.
// Finalize request POST /acme/order/xyz/finalize { "csr": "MIIBkTCB...base64url-encoded-DER..." } // Serversvar (ordern går till processing, sedan valid) { "status": "valid", "certificate": "https://acme.fairssl.dk/acme/cert/abc123" }
Nyckelval: Vi rekommenderar ECDSA P-384 eller RSA 3072 för de flesta miljöer. Undvik RSA 2048: det är den första nyckelstorleken som kommer att blockeras när kraven skärps.
CSR-domäner måste matcha ordern. Om CSR:en innehåller en domän som inte finns i ordern, eller tvärtom, avvisar servern med ett fel. De flesta ACME-klienter hanterar detta automatiskt.
6 Ladda ner certifikatkedjan
När ordern är valid hämtar klienten certifikatet från den URL som servern angav i finalize-svaret.
Svaret är en PEM-kedja: leaf-certifikat + intermediate(s). Klienten installerar certifikatet och den tillhörande privata nyckeln
på servern.
ACME-klienter som simple-acme, Certbot och Lego hanterar hela installationen automatiskt: de sparar certifikat och nyckel, binder till IIS/Nginx/Apache, och startar om tjänster vid behov.
# Certifikatkedjan (PEM-format) -----BEGIN CERTIFICATE----- MIIFjTCCBHWgAwIBAgI... (leaf: ditt-doman.se) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEtjCCA56gAwIBAgI... (intermediate: CA) -----END CERTIFICATE-----
Hela flödet från newOrder till certifikat tar typiskt under 15 sekunder för DV-certifikat med HTTP-01 eller DNS-01 (förutsatt att DNS har propagerats). För FairSSL ACME med Auto DNS är den typiska tiden under 30 sekunder inklusive DNS-propagering.
ACME Renewal Information (ARI)
ARI (RFC 9773) är ett tillägg till ACME som låter CA:n signalera det optimala förnyelsefönstret för varje certifikat. Utan ARI förnyar klienter baserat på ett fast intervall (t.ex. "30 dagar före utgång"). Med ARI frågar klienten dagligen: "när ska jag förnya detta certifikat?" och CA:n svarar med ett exakt fönster.
Varför ARI är kritiskt från 2026
Med kortare certifikatlivslängder (200 dagar från mars 2026, 100 dagar från 2027, 47 dagar från 2029) är marginalen för fel minimal. Ett fast 30-dagars förnyelsefönster ger bara 17 dagars buffert med 47-dagars certifikat. Om förnyelse misslyckas flera gånger går certifikatet ut.
Utan ARI
- Fast förnyelsestidpunkt (klientkonfiguration)
- CA:n kan inte signalera tidig förnyelse
- Återkallning kräver manuell handling
- Alla klienter förnyar samtidigt (belastningstoppar)
Med ARI
- CA:n bestämmer förnyelsefönster dynamiskt
- Återkallning utlöser omgående förnyelse
- Nyckelkompromittering: CA:n kan tvinga alla att förnya
- Belastningen sprids automatiskt (randomiserad inom fönstret)
# ARI endpoint-svar GET /acme/renewal-info/certID { "suggestedWindow": { "start": "2026-04-15T00:00:00Z", "end": "2026-04-20T00:00:00Z" } }
Vår viktigaste rekommendation 2026: använd inte en ACME-klient utan ARI-stöd om du kan undvika det. Simple-acme, Lego och Certbot 3+ stödjer ARI. Se vår ACME-klientöversikt för en komplett jämförelse.
FairSSL Auto DNS: DNS-01 som managed service
DNS-01 är den mest flexibla valideringsmetoden, men kräver normalt att ACME-klienten har API-åtkomst till din DNS-leverantör. FairSSL Auto DNS eliminerar detta behov med CNAME-delegering.
Uppsättning (engångs)
- 1 Skapa CNAME-post:
_acme-challenge.ditt-doman.se CNAME ditt-doman.se.acme.fairssl.dk. - 2 ACME-klienten skickar valideringsförfrågan till FairSSL ACME-servern
- 3 FairSSL skapar TXT-posten automatiskt i vår valideringszon
- 4 CA:n följer CNAME-kedjan, hittar TXT-posten, och certifikatet utfärdas
# Verifiera CNAME-uppsättning nslookup -type=CNAME _acme-challenge.ditt-doman.se _acme-challenge.ditt-doman.se canonical name = ditt-doman.se.acme.fairssl.dk.
CNAME-posten sätts upp en gång. Därefter hanterar FairSSL all DNS-validering automatiskt för alla framtida utfärdanden och förnyelser. Se Auto DNS-dokumentationen för detaljer.
Övervakning och drift
Automatisering är bara värdefull om du kan verifiera att den fungerar. FairSSL-portalen ger översikt över alla ACME-hanterade certifikat.
Dashboard
Central översikt över alla certifikat: status, utgångsdatum, senaste förnyelse och CA. Färgkoder visar om certifikat närmar sig utgång.
Senaste kontakt
Vi registrerar när varje ACME-klient senast kontaktade servern. Om en klient inte har hört av sig på för lång tid får du ett meddelande.
Utgångslarm
Automatiska notifieringar när ett certifikat närmar sig utgång utan att ha förnyats. Säkerhetsnät mot bortglömd automation.
Relaterat innehåll
ACME-klienter
Jämförelse av simple-acme, Certbot, Lego och acme.sh.
Auto DNS
DNS-01-validering med CNAME-delegering. Inga API-nycklar.
FairSSL vs Let's Encrypt
EAB, multi-CA, OV/EV-stöd och de viktigaste skillnaderna.
Valideringsguide
HTTP-01, DNS-01 och TLS-ALPN-01 med exempel och felsökning.
Simple-ACME guide
Komplett installationsguide för Windows Server med IIS.
Vad är SSL?
Från grundläggande HTTPS till cipher suites och Certificate Transparency.
Vanliga frågor om ACME
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
*.ditt-doman.se och en för ditt-doman.se (apex-domänen täcks inte av wildcard).Kom igång med SSL-automatisering
Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.