Väg 1 · Gratis ACME · Gör det själv
Gratis SSL-certifikat med ACME: guide till konfiguration och drift
Gratis SSL-certifikat löser utfärdandet. Ni behöver fortfarande sköta förnyelse, installation och övervakning. Välj en CA, begränsa DNS-behörigheterna och testa hela vägen fram till tjänsten som använder SSL-certifikatet.
- Välj den när
- era servrar och er utrustning har inbyggd ACME som själv förnyar och själv rapporterar fel, eller när ni har en tekniker som kan bygga och underhålla skript. Certifikaten är gratis, och ni väljer själva CA, klient och valideringsmetod per server.
- Passar inte längre när
- varje server får sin egen lösning, dokumentation och övervakning inte hänger med, och det inte finns något centralt ställe som visar hur allt är uppsatt och körs. Timmarna för att utveckla skript, uppdatera dem och sätta upp nya servrar blir snabbt många när miljön växer.
Så fungerar ACME
ACME är protokollet mellan er klient och en CA. Klienten beställer SSL-certifikatet och bevisar kontrollen över namnen. Installation i rätt tjänst är ett separat steg.
RFC 8555: ACME beskriver förloppet: account skapar ACME-kontot; order beställer namnen; authorization anger vad som behöver godkännas; challenge bevisar domänkontrollen; finalize skickar en CSR; certificate låter klienten hämta det utfärdade SSL-certifikatet.
ARI (ACME Renewal Information, RFC 9773) låter CA:n föreslå ett förnyelsefönster. Klienten behöver fortfarande köras regelbundet och installera resultatet. Läs om ACME-protokollet från beställning till förnyelse.
Välj en gratis CA
Välj CA efter er valideringsmetod och drift. Skapa det konto som behövs, läs CA:ns villkor och tillåt den i era CAA-poster.
| CA | Vad behöver ni veta? |
|---|---|
| Google Trust Services (rekommenderas) | Lite mer att konfigurera första gången: ett Google Cloud-konto, ett projekt och en EAB-nyckel. I gengäld ger dns-persist-01 den säkraste valideringen, eftersom servrarna inte behöver DNS-API-uppgifter. Konfiguration · dns-persist-01 |
| Let's Encrypt (mest populära) | Kräver validering med http-01 eller dns-01. Om det är enkelt att öppna port 80 fungerar det bra för de flesta. Med dns-01 behöver servrarna DNS-API-uppgifter, helst bara för en separat valideringszon (se Domänvalidering). Har rate limits för dubbletter. Kom igång · Spridning · Rate limits |
| ZeroSSL | Kräver ett konto. ACME och EAB |
| Actalis (EU) | Ett bra val när EU kommer först. Bara ett FQDN per certifikat, men gratis. ACME-guide · Gratis plan · Europeisk CA |
ACME-klienten skapar kontot hos Let’s Encrypt. Tabellen lyfter fram http-01 och dns-01; Let’s Encrypt stöder även tls-alpn-01.
Google Trust Services kräver ett Google Cloud-konto och ett projekt med Public CA API aktiverat. Skapa en EAB-nyckel (External Account Binding) för att koppla ACME-kontot till projektet. Projektets ACME-konton delar Public CA-kvoter. ZeroSSL kräver också EAB-uppgifter; deras gratis ACME-tjänst är skild från övriga API-produkter.
En CAA-post begränsar vilka CA:er som får utfärda. Tillåt er valda CA med issue och kontrollera issuewild för wildcards. Använd CAA-reglerna och FairSSL:s CAA-generator för rätt DNS-post.
Rate limits för utfärdande
När certifikatens livslängd blir kortare slår rate limits hårdare, eftersom ni utfärdar oftare. Gränserna betyder mest när ni utfärdar många nya certifikat på en gång, till exempel när en ny miljö tillkommer, när ni byter CA eller när ni återställer servrar från backup. Ett certifikat som flyttar från en annan CA räknas som nytt hos den nya CA:n.
| CA | Gränser för utfärdande och validering | Namn per certifikat | Källa |
|---|---|---|---|
| Google Trust Services |
| Inte angivet | Google Cloud: kvoter · Google: EAB och projekt Uppdaterad 2026-10-28. Senast kontrollerad 2026-11-07. |
| Let's Encrypt |
| Upp till 100 namn (FQDN eller IP) per certifikat, beroende på vald certifikatprofil. | Let's Encrypt: rate limits Uppdaterad 2026-08-05. Senast kontrollerad 2026-11-07. |
| ZeroSSL |
| Inte angivet | ZeroSSL: ACME Senast kontrollerad 2026-11-07. |
| Actalis |
| 1 FQDN | Actalis: gratisplan · Actalis: ACME · Actalis: europeisk CA Senast kontrollerad 2026-11-07. |
Planerar ni många nya certifikat, fördela dem på flera konton eller projekt där gränsen gäller per konto. Sätt upp en extra CA i förväg och lägg till den i era CAA-poster, så att ni kan byta utan att vänta.
Domänvalidering
Välj en metod som både CA och klient stöder. Använd DNS-validering för wildcards och interna servrar med offentliga domännamn. Begränsa klientens DNS-behörigheter till valideringen.
http-01: Klienten lägger ett svar på http://<name>/.well-known/acme-challenge/<token>. CA:n hämtar det via port 80. Metoden kan inte validera wildcards. En intern server kan bara använda metoden om ett offentligt tillgängligt HTTP-system besvarar utmaningen för namnet.
dns-01: Klienten skapar en TXT-post på _acme-challenge.<name>. För *.example.com används _acme-challenge.example.com. CA:n läser offentlig DNS; själva tjänsten kan vara intern. Let’s Encrypt förklarar HTTP- och DNS-validering.
tls-alpn-01: CA:n ansluter till port 443 och begär acme-tls/1 via ALPN. En responder visar ett särskilt, tillfälligt SSL-certifikat som bevis. Er TLS-terminering måste stödja metoden. RFC 8737: tls-alpn-01.
| Metod | Inkommande port på tjänsten | Wildcard | Intern server | Vad behöver ni köra? |
|---|---|---|---|---|
| http-01 | 80 | Nej | Bara med offentlig HTTP-responder | Klient med åtkomst till webroot eller HTTP-responder |
| dns-01 | Ingen; CA:n frågar offentlig DNS | Ja | Ja, med offentligt DNS-namn | Klient med DNS-plugin och begränsad DNS-API-behörighet |
| tls-alpn-01 | 443 | Nej | Bara med offentlig TLS-responder | Klient/responder med acme-tls/1 i TLS-termineringen |
| dns-persist-01 | Ingen; CA:n frågar offentlig DNS | Ja, med CA:ns policy | Ja, med offentligt DNS-namn | Kompatibel klient, ACME-kontonyckel och beständig TXT-post |
Klienten publicerar beviset. CA:n kontrollerar det. Installation följer efter utfärdandet.
Begränsa DNS-API-behörigheten med en valideringszon
DNS-plugin använder API-uppgifter för att skapa och ta bort TXT-poster. Med en klient på varje server får varje server DNS-behörighetsuppgifter. En läckt nyckel kan ändra allt som behörigheterna tillåter. Ge därför inte klienten åtkomst till hela domänens zon.
Skapa en separat valideringszon (challenge zone). Gör en CNAME-vidarebefordran från _acme-challenge till ett namn i valideringszonen och ge klienten skrivbehörighet bara där. CA:n följer CNAME till TXT-posten. Klienten eller DNS-plugin måste också kunna skriva till målet; en CNAME flyttar inte automatiskt klientens API-anrop. Varje SAN-namn kan behöva en egen vidarebefordran.
CNAME ligger kvar i domänens zon. Klienten skriver challenge-värden bara i valideringszonen.
DNS-exempel: CNAME och TXT i separata zoner
Den första posten ligger i example.com. Den andra ligger i valideringszonen acme.example.net. Byt ut namnen och låt klienten ange aktuellt challenge-värde. CNAME ligger kvar; TXT-värdet ändras vid nya dns-01-valideringar.
_acme-challenge.example.com. 300 IN CNAME example-com.acme.example.net.
example-com.acme.example.net. 300 IN TXT "<challenge-value>" dns-persist-01 hos Google
dns-persist-01 använder en beständig TXT-post på _validation-persist som knyter domänen till CA:n och ACME-kontot, så att klienten inte behöver skriva ett nytt TXT-värde vid varje förnyelse. IETF-utkastet är i version -02 från 2026-09-20. Google Trust Services stöder det i dag och kräver EAB. Let’s Encrypt har det inte än, men det är planerat. GlobalSign har det planerat till 2027. ZeroSSL och Sectigo ACME stöder det inte. Följ Googles dns-persist-01-format och krav på klienten.
Posten är bunden till ett ACME-konto. Har varje server sin egen ACME-klient och sitt eget konto behöver domänen en TXT-post per server under _validation-persist. Delar servrarna ett konto räcker en post, men då kan alla servrar utfärda för alla domänerna och återkalla alla certifikaten. Skapa aldrig ett nytt konto på en server som redan använder dns-persist-01. Byt nyckeln i stället, så att posten fortsätter att gälla. Google: ACME-konton och dns-persist-01
Hos FairSSL fungerar dns-persist med DigiCert-certifikaten och kräver ert eget DigiCert-konto; på det gemensamma kontot validerar AutoDNS i stället. Läs mer i dns-persist-01 med DigiCert: en DNS-post, och alla namn är godkända i förväg och dns-persist-01 i sslbrain: inga DNS-nycklar på servrarna. För klassisk dns-01 kan ni följa vår guide till DNS-plugin och ACME DNS-validering.
Konfiguration, klient och ARI
Välj förnyelsetidpunkt, nyckeltyp och SAN-namn efter systemen som ska använda SSL-certifikatet. Testa mot staging och skapa ett schemalagt jobb med installation efter lyckad förnyelse.
Ta bara med de SAN-namn som tjänsten behöver. Välj RSA eller ECDSA efter klienternas och tjänstens stöd. Låt en aktuell ACME-klient följa ARI och kontrollera dess förnyelsejobb. Ett fast kalenderdatum passar inte nödvändigtvis nästa SSL-certifikats giltighetstid.
SSL-certifikatens giltighetstid blir kortare. Tidslinjen visar samma giltighetstider som resten av webbplatsen: högst 199 dagar nu och 99 dagar senast 2027-03-15. DigiCert byter 2027-02-24. Gratis CA:er kan utfärda SSL-certifikat med kortare giltighetstid. Manuell förnyelse är ingen driftsplan.
ARI ger ett rekommenderat förnyelsefönster, även när en CA vill ha tidig förnyelse. Klienterna här dokumenterar ARI-stöd. Våra guider visar klientkonfiguration; anpassa CA-adress och EAB när ni använder en gratis CA.
| Klient | ARI-källa | Konfiguration |
|---|---|---|
| simple-acme | Dokumentation för ARI: simple-acme | Konfigurationsguide för simple-acme |
| lego | Dokumentation för ARI: lego | Konfigurationsguide för lego |
| Certbot | Dokumentation för ARI: Certbot | Konfigurationsguide för Certbot |
| Caddy | Dokumentation för ARI: Caddy | Konfigurationsguide för Caddy |
win-acme eller simple-acme?
simple-acme är en fortsättning från samma utvecklare och beskrivs som en bakåtkompatibel ersättare för win-acme. Projektets egen förklaring och installationsguiden med wacs.exe beskriver övergången. Använd vår simple-acme-guide för SSL-certifikat i Windows.
Posh-ACME: vad styr förnyelsetidpunkten?
Sökningen “renewaldays posh-acme” blandar klienternas inställningar. RenewalDays är en win-acme/simple-acme-inställning, inte en parameter till Submit-Renewal. Posh-ACME använder orderns RenewAfter. ARI kan uppdatera tidpunkten när CA:n stöder det. Posh-ACME kontrollerar RenewAfter före förnyelse.
Schemalägg Submit-Renewal regelbundet under samma användare och konfiguration som vid installationen. Ett jobb startar inte av sig självt när RenewAfter har nåtts. -Force kringgår tidskontrollen och bör inte användas som normal förnyelseplan. Se dokumentationen för Submit-Renewal och Windows-konfiguration med schemalagda ACME-jobb.
Kommandon mot Let’s Encrypt staging
Installera klienten först. Byt ut example.com, e-postadress och sökvägar mot era egna. HTTP-exemplen kräver en befintlig webroot som nås på port 80; använd en testserver. Staging utfärdar SSL-certifikat utan offentlig tillit. Spara dem separat och bind dem inte till produktion.
simple-acme · PowerShell · http-01
Kör från installationsmappen. Den befintliga webroot måste kunna visa challenge-filer. PEM-filerna sparas i testmappen; --installation none ändrar inga IIS-bindningar.
New-Item -ItemType Directory -Force C:\acme-staging
.\wacs.exe --source manual --host example.com --validation filesystem --webroot C:\inetpub\wwwroot --store pemfiles --pemfilespath C:\acme-staging --installation none --baseuri https://acme-staging-v02.api.letsencrypt.org/ --accepttos --emailaddress admin@example.com Certbot · shell · http-01
certonly hämtar SSL-certifikatet utan att installera det. Testkonfiguration, arbetsfiler och loggar sparas separat.
sudo certbot certonly --webroot -w /var/www/html -d example.com \
--server https://acme-staging-v02.api.letsencrypt.org/directory \
--config-dir /etc/letsencrypt-staging --work-dir /var/lib/letsencrypt-staging \
--logs-dir /var/log/letsencrypt-staging --agree-tos --email admin@example.com lego v4 · shell · http-01
Exemplet använder lego v4:s dokumenterade flaggor och en separat mapp. Klienten skriver challenge-filen i er befintliga webroot.
lego --server https://acme-staging-v02.api.letsencrypt.org/directory \
--path ./lego-staging --email admin@example.com --accept-tos \
--domains example.com --http --http.webroot /var/www/html run acme.sh · shell · http-01
Välj CA uttryckligen. letsencrypt_test väljer staging. Använd senare --install-cert och en lämplig --reloadcmd för produktion; tjänsten ska inte läsa direkt från klientens interna lagring.
acme.sh --register-account --server letsencrypt_test --config-home ./acme-staging --accountemail admin@example.com
acme.sh --issue --server letsencrypt_test --config-home ./acme-staging \
-d example.com --webroot /var/www/html Posh-ACME · PowerShell · dns-01
Exemplet kräver DNS hos Cloudflare och en API-token med Zone:DNS:Edit för den aktuella zonen. Ange token vid prompten. Välj respektive plugin för andra DNS-leverantörer. Submit-Renewal kan hoppa över en order som ännu inte behöver förnyas.
Set-PAServer LE_STAGE
$pArgs = @{ CFToken = (Read-Host 'Cloudflare API token' -AsSecureString) }
New-PACertificate example.com -AcceptTOS -Contact admin@example.com -Plugin Cloudflare -PluginArgs $pArgs
Get-PAOrder | Select-Object MainDomain, RenewAfter
Submit-Renewal När staging fungerar skapar ni en separat produktionskonfiguration hos Let’s Encrypt. Använd CA:ns produktionsadress i klienten, eller letsencrypt i acme.sh och LE_PROD i Posh-ACME. Testa det schemalagda jobbet och installationsskriptet med de behörigheter de får i drift.
Installation av SSL-certifikatet
Installera SSL-certifikat, certifikatkedja och privat nyckel där tjänsten förväntar sig dem. Läs in konfigurationen igen eller starta om tjänsten efter behov och kontrollera det SSL-certifikat den faktiskt visar.
Ett lyckat ACME-jobb bevisar inte att installationen lyckades. Använd klientens installationsfunktion eller ett skript efter förnyelse. Anpassa filformat, behörigheter och bindningar efter guiden för er server eller appliance.
- NetScaler: konfigurera SSL-certifikat med ACME. Följ guiden för utrustningens konfiguration.
- FortiGate: ACME och installation av SSL-certifikat. Kontrollera kraven för er firmware och tjänst.
- F5 BIG-IP: installation och bindning av SSL-certifikat. En ACME-klient kan sköta utfärdandet; planera även import och bindning på F5.
Övervakning av SSL-certifikat
Håll en förteckning över SSL-certifikat, namn, servrar och ansvariga. Övervaka både förnyelsejobbet och det SSL-certifikat tjänsten faktiskt visar. Skicka fel till någon som kan agera.
Let’s Encrypt slutade skicka e-post om utgångsdatum 4 juni 2025. Ett jobb kan förnya korrekt medan en tjänst fortfarande använder en gammal fil eller bindning. Kontrollera därför giltighet och namn på varje destination.
Kontrollera SSL-certifikatet som tjänsten visar
Kör från ett nätverk som når tjänsten. Använd rätt värdnamn som SNI. Granska namn, certifikatkedja och giltighet i svaret; den manuella kontrollen ersätter inte löpande övervakning.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
openssl s_client -connect example.com:443 -servername example.com </dev/null | openssl x509 -noout -subject -issuer -dates -ext subjectAltName Ett gratis FairSSL-konto ger CT-loggövervakning av era domäner utan agent eller installation. Aktivera utgångsvarningar för de upptäckta SSL-certifikaten. CT-loggar visar utfärdanden, inte vad varje server använder; ett nytt SSL-certifikat för samma namn kan ersätta det gamla i övervakningen. Behåll därför även kontrollen av varje tjänst.
Felsökning och planen när något går sönder
Bestäm vem som reagerar på fel och hur ni rättar DNS, behörigheter, klienter och installationer. Spara loggar där de ansvariga kan läsa dem, även när servern inte svarar.
Om ett namn i ett SAN-SSL-certifikat inte längre kan valideras kan förnyelsen misslyckas för hela SSL-certifikatet. Ta bort namn ni inte längre använder och kontrollera alla namn efter domänändringar. Ha en plan för att utfärda och installera igen från en fungerande dator.
“domain validation failed (dns01)”
- Läs exakt namn och förväntat TXT-värde i klientens logg. Fråga alla auktoritativa namnservrar; er lokala resolver kan ge ett cachelagrat svar.
- Kontrollera DNS-propagering och TTL. Vänta tills ändringen syns hos de auktoritativa servrarna och gamla cachelagrade svar har löpt ut innan ni försöker igen.
- Följ CNAME till rätt zon. Kontrollera att DNS-plugin skriver i målzonen, inte i en privat DNS-zon eller på fel namn.
- Rensa gamla TXT-värden. Behåll värden som andra aktiva valideringar använder; samtidiga ordrar kan kräva olika värden på samma namn.
- Kontrollera CAA och issuewild för vald CA. Vid rate limits ska ni följa felets angivna tid för nästa försök och felsöka i staging. Upprepade försök rättar inte en felaktig DNS-post.
Slå upp CNAME, TXT och CAA med dig / nslookup
Använd de verkliga auktoritativa namnservrarna från NS-uppslaget i stället för ns1.example.com och ns1.example.net och upprepa mot var och en. Exemplet följer valideringszonen ovan. Utan CNAME frågar ni direkt efter TXT på _acme-challenge.example.com.
dig +short NS example.com
dig @ns1.example.com _acme-challenge.example.com CNAME +noall +answer
dig +short NS acme.example.net
dig @ns1.example.net example-com.acme.example.net TXT +noall +answer
nslookup -type=TXT example-com.acme.example.net ns1.example.net
dig @ns1.example.com example.com CAA +noall +answer När http-01 misslyckas
Kontrollera port 80 i brandvägg och NAT och att A/AAAA pekar på rätt server. Kontrollera att webroot hör till rätt värdnamn. Prova challenge-URL:en utifrån med aktuell token medan valideringen väntar. Omdirigeringar får inte leda CA:n till inloggning, fel sökväg eller en otillgänglig värd. Let’s Encrypt beskriver tillåtna omdirigeringar.
Undersök HTTP-svar och omdirigeringar
Byt ut TOKEN mot filnamnet från klientens logg. Det första kommandot visar det första svaret; det andra följer omdirigeringar. Innehållet ska vara förväntat challenge-svar, inte en HTML-felsida.
curl -v --max-time 15 http://example.com/.well-known/acme-challenge/TOKEN
curl -vL --max-redirs 10 --max-time 30 http://example.com/.well-known/acme-challenge/TOKEN Dokumentera varje servers konfiguration
Skriv ned klient och version, CA och ACME-konto, valideringsmetod, DNS-zon, förnyelsejobb, sökvägar och installationskommandon. Notera också var den privata nyckeln finns och vem som har åtkomst.
Ta en skyddad säkerhetskopia av ACME-kontonyckeln och nödvändig konfiguration. Kontonyckeln är inte SSL-certifikatets privata nyckel. Notera ansvarig, larm och återställningsprocedur. De ansvariga ska kunna hitta dokumentationen och återställa konfigurationen.
Frågor om gratis SSL-certifikat och ACME
Kan jag få gratis SSL-certifikat med ACME?
Ja. Let’s Encrypt, Google Trust Services, ZeroSSL och Actalis erbjuder gratis ACME-utfärdande med olika krav. Ni behöver fortfarande sköta förnyelse, installation och övervakning.
Kan ACME användas för en intern server?
Ja, med ett offentligt domännamn och offentlig DNS-validering. dns-01 kräver ingen inkommande port på tjänsten. http-01 och tls-alpn-01 kräver en offentligt tillgänglig responder.
Vad är skillnaden mellan win-acme och simple-acme?
simple-acme är en fortsättning från samma utvecklare. Projektet beskriver det som en bakåtkompatibel ersättare för win-acme. Läs projektets installationsdokumentation och vår Windows-guide före övergången.
Styr RenewalDays förnyelsen i Posh-ACME?
Nej. Posh-ACME kontrollerar orderns RenewAfter vid Submit-Renewal. ARI kan uppdatera tidpunkten. Ni behöver själva schemalägga körningen; -Force kringgår tidskontrollen. RenewalDays är en inställning i win-acme/simple-acme.
Varför misslyckas dns-01-validering?
Kontrollera TXT-värdet hos de auktoritativa namnservrarna, DNS-propagering och TTL, CNAME-målet, pluginens zon och gamla TXT-poster. Kontrollera också CAA och CA:ns rate limits. Använd klientens logg för att hitta namnet som misslyckas.
Räcker CT-loggövervakning för att hitta ett utgånget SSL-certifikat?
Nej. CT-loggar visar utfärdanden. De visar inte vilket SSL-certifikat tjänsten faktiskt använder. Övervaka både förnyelsejobbet och SSL-certifikatet på varje destination.
Källor och officiell dokumentation
- RFC 8555: ACME
- RFC 9773: ACME Renewal Information
- RFC 8737: tls-alpn-01
- Let's Encrypt: getting started
- Let's Encrypt: adoption
- Let's Encrypt: challenge types
- Let's Encrypt: rate limits
- Let's Encrypt: staging
- Let's Encrypt: expiry emails ended
- Let's Encrypt: CAA / issuewild
- Google Trust Services: Public CA / EAB
- Google Trust Services: quotas
- Google Trust Services: ACME accounts and dns-persist-01
- Google Trust Services: dns-persist-01
- ZeroSSL: ACME / EAB
- Actalis: ACME
- Actalis: Free Plan
- Actalis: European CA
- simple-acme: win-acme
- simple-acme: wacs.exe
- simple-acme: CLI
- simple-acme: ARI / RenewalDays
- Certbot: user guide
- Certbot: ARI changelog
- lego v4: CLI flags
- lego v4: CLI examples
- lego: ARI changelog
- Caddy: ARI
- acme.sh: webroot / installation
- acme.sh: CA / staging
- Posh-ACME: tutorial
- Posh-ACME: Set-PAServer
- Posh-ACME: Cloudflare DNS plugin
- Posh-ACME: Submit-Renewal
- Posh-ACME: RenewAfter / ARI
- ISC BIND: dig
- Microsoft: nslookup
- curl: command line
- OpenSSL: s_client
- OpenSSL: x509 / SAN / expiry
Senast uppdaterad: