SSL-certifikatens maximala livslängd reduceras till 200 dagar från mars 2026. Läs mer →

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 + newNonce
2. Konto newAccount
3. Order newOrder
4. Validering challenge
5. Finalize CSR + signering
6. Certifikat download

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 ready processing valid

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. 1 Skapa CNAME-post: _acme-challenge.ditt-doman.se CNAME ditt-doman.se.acme.fairssl.dk.
  2. 2 ACME-klienten skickar valideringsförfrågan till FairSSL ACME-servern
  3. 3 FairSSL skapar TXT-posten automatiskt i vår valideringszon
  4. 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.

Vanliga frågor om ACME

Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.

HTTP-01 kräver att ACME-klienten placerar en fil på port 80, som CA:n hämtar. DNS-01 kräver en TXT-post i DNS. DNS-01 är mer flexibel: den fungerar bakom brandväggar, lastbalanserare och för wildcard-certifikat.
EAB kopplar din ACME-klient till ditt FairSSL-konto. Du genererar ett EAB Key ID och HMAC Key i FairSSL-portalen och anger dem vid första kontoregistreringen. Därefter faktureras alla certifikatförfrågningar från den klienten till ditt konto. EAB definieras i RFC 8555 sektion 7.3.4.
ARI (ACME Renewal Information, RFC 9773) låter CA:n meddela klienten den optimala förnyelsestidpunkten. Typiskt ca 33 % av livslängden före utgången. Med 200-dagars certifikat (2026) innebär det förnyelse ungefär var 133:e dag. Med 47-dagars certifikat (2029) ungefär var 31:a dag. Klienten kontrollerar dagligen och förnyar automatiskt.
Ja. Använd DNS-01 challenge med FairSSL Auto DNS. Du sätter upp en CNAME-post som pekar på vår valideringsserver, och vi hanterar DNS-challenges åt dig. Inga inkommande anslutningar till din server.
Båda använder ACME-protokollet (RFC 8555). Let's Encrypt utfärdar bara DV-certifikat från en CA och kräver inget konto. FairSSL ACME utfärdar från DigiCert, GlobalSign och Sectigo, stödjer OV/EV (med föregående validering), och använder EAB för kontobindning. Se den fullständiga jämförelsen.
ACME-klienter har retry-logik. Om servern är otillgänglig försöker klienten igen vid nästa schemalagda körning (typiskt dagligen). Med ARI aktiverat har klienten ett förnyelsefönster på flera dagar, så kortvarig nedtid är oproblematisk. Utan ARI, förnya med god marginal (vi rekommenderar minst 15 dagars buffert).
Ja. Wildcards kräver DNS-01-validering (specificerat i RFC 8555). Med FairSSL Auto DNS är uppsättningen en enda CNAME-post. Observera att du behöver två separata valideringar: en för *.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.