Simple-ACME (win-acme): komplett Windows-guide
Simple-acme är den mest använda ACME-klienten för Windows Server och en drop-in replacement för win-acme, byggd av samma utvecklare. Den kan användas överallt där win-acme används idag. Den här guiden täcker allt från installation till produktion med FairSSL som ACME-server.
FairSSL är sponsor av simple-acme-projektet.
Namnhistorik
Projektet har bytt namn flera gånger, vilket kan skapa förvirring vid sökning:
- 2017-2023 win-acme (WACS) av Wouter Tinus. Enbart Windows, .NET Framework.
- 2024-nu simple-acme, fork med ny underhållare. Plattformsoberoende (.NET 8), ARI-stöd, aktiv utveckling.
Domänen win-acme.com finns fortfarande, men vi rekommenderar simple-acme.com som källa.
Nedladdning och krav
Mycket mindre nedladdning. Med FairSSL AutoDNS behövs inga plugins, eftersom FairSSL hanterar DNS-validering. Täcker de flesta uppsättningar.
Alla plugins inkluderade: DNS-validering via egna DNS API-nycklar, PEM/PFX-export, Azure Key Vault. Använd denna om ni behöver direkt DNS API-integration eller speciella exportformat.
- OS: Windows Server 2012+ (x64). Linux beta tillgänglig.
- Runtime: .NET 8 (medföljande i nedladdningen).
- Aktuell version: v2.3.5
- Licens: Apache 2.0 (open source).
- Installation: Packa upp till
C:\Simple-Acme. Ingen installer, bara kopiera mappen. Scripts finns iC:\Simple-Acme\Scripts.
Konfiguration med FairSSL ACME-server
Innan du startar simple-acme behöver du skapa EAB-uppgifter i FairSSL kontrollpanelen. EAB (External Account Binding) kopplar ACME-certifikat till ert FairSSL-konto, så alla certifikat, klienter och förnyelser är synliga och övervakade.
Skapa EAB-nycklar i FairSSL
Logga in på kontrollpanelen, gå till ACME och klicka Anslut ACME-klient. Du får ett Key ID och en HMAC Key.
Registrera konto med EAB
Kör simple-acme med FairSSL som server och EAB-nycklarna från steg 1:
simple-acme.exe --register ^ --baseuri https://fairssl.dk/acme/ ^ --eab-key-identifier ERT_KEY_ID ^ --eab-key ER_HMAC_KEY ^ --eab-algorithm HS256 ^ --emailaddress er@email.se ^ --accepttos
Verifiera registrering
Kontrollera i FairSSL kontrollpanelen att klienten syns under er ACME-profil. Kontot är nu kopplat till FairSSL.
Interaktiv meny: ditt första certifikat
Starta simple-acme.exe utan argument för att öppna den interaktiva menyn. Vid första körningen väljer du ACME-server och registrerar ditt konto.
Please choose from the menu: N: Create certificate (default settings) M: Create certificate (full options) R: Run renewals (0 currently due) A: Manage renewals (1 total) O: More options... Q: Quit
M: Full konfiguration (rekommenderad)
Vi rekommenderar M (full options) så att du har full kontroll över alla inställningar och inte missar något. Du väljer manuellt:
- Source Var domännamn hämtas: IIS (automatiskt), manual (du anger namn), eller CSR (befintlig nyckel).
- Validation HTTP-01 (selfhosting, filesystem, FTP, WebDAV), DNS-01 (23+ DNS-leverantörer, acme-dns, script) eller TLS-ALPN-01.
- CSR Nyckeltyp: RSA (standard 3072 bit) eller EC/ECDSA (standard P-384). Kan ändras.
- Store Var certifikatet sparas: Windows Certificate Store, IIS Central Certificate Store, PEM-filer, PFX, Azure Key Vault.
- Installation Vad som händer efter: IIS binding-uppdatering, scriptkörning, eller båda.
N (default settings) är snabbare, men använder HTTP-01 och standardinställningar. För servrar bakom brandvägg, wildcard-certifikat, eller speciella installationer som Exchange och RDP, använd alltid M.
CLI-automatisering (unattended mode)
För automatisering och CI/CD använder du CLI-argument istället för den interaktiva menyn. Nedan finns de vanligaste scenarierna.
IIS-site med FairSSL AutoDNS
Wildcard + apex-domän, validerat via DNS-01 med FairSSL AutoDNS.
Inga DNS API-nycklar nödvändiga. --siteid 1 installerar certifikatet på IIS site 1
och binder det automatiskt till de värdnamn i siten som matchar certifikatets namn.
simple-acme.exe ^ --baseuri https://fairssl.dk/acme/ ^ --source manual ^ --host "*.ditt-doman.se,ditt-doman.se" ^ --validationmode dns-01 ^ --validation acme-dns ^ --csr ec ^ --store certificatestore ^ --installation iis ^ --siteid 1 ^ --accepttos
DNS-validering med egen DNS-leverantör och extra PEM + PFX (pluggable)
Om ni inte använder AutoDNS och istället har direkt API-åtkomst till er DNS-leverantör (kräver pluggable-versionen). Detta exempel validerar via Cloudflare API, sparar certifikatet i Windows Certificate Store, som PEM-filer och som PFX, och installerar på IIS site 1:
simple-acme.exe ^ --baseuri https://fairssl.dk/acme/ ^ --source manual ^ --host www.ditt-doman.se,ditt-doman.se ^ --validationmode dns-01 ^ --validation cloudflare ^ --cloudflareapitoken ER_CF_TOKEN ^ --csr ec ^ --store certificatestore,pemfiles,pfxfile ^ --pemfilespath C:\certs\ditt-doman.se ^ --pfxfilepath C:\certs\ditt-doman.se ^ --pfxpassword LOSENORD ^ --installation iis ^ --siteid 1 ^ --accepttos
Lagringsalternativ (store)
Simple-acme kan spara certifikat på flera sätt. Kombinera dem med komma i --store.
Windows Certificate Store
--store certificatestore
Standard för IIS, Exchange, RDP. Certifikatet installeras i Local Machine store.
PEM-filer (certifikat + nyckel)
--store pemfiles ^ --pemfilespath C:\certs\
För Nginx, HAProxy, nätverksutrustning. Genererar .pem- och .key-filer.
PFX-fil (PKCS#12)
--store pfxfile ^ --pfxfilepath C:\certs\ ^ --pfxpassword LOSENORD
För import i andra system. Lösenordsskyddad.
Kombinera lagringstyper: --store certificatestore,pemfiles sparar i Windows Certificate Store och exporterar PEM-filer samtidigt.
Post-förnyelse-script
Kör ett script efter att förnyelsen har genomförts, t.ex. för att aktivera certifikatet på nätverksutrustning eller starta om en tjänst:
simple-acme.exe ^
--baseuri https://fairssl.dk/acme/ ^
--source manual ^
--host rdp.ditt-doman.se ^
--validationmode dns-01 ^
--validation acme-dns ^
--csr ec ^
--store pemfiles ^
--pemfilespath C:\certs\rdp ^
--installation script ^
--script "C:\scripts\deploy-cert.ps1" ^
--scriptparameters "'{CertThumbprint}' '{StoreType}'" ^
--accepttos
Alla argument med ^ är Windows CMD line continuation. I PowerShell används backtick ` istället.
Värden med specialtecken (wildcards, mellanslag) ska omslutas av dubbla citattecken.
Valideringsmetoder
HTTP-01
Simple-acme placerar en fil på port 80, som CA:n hämtar. Standard i N-menyn (selfhosting).
Fördelar
- Enkel uppsättning, ingen DNS-åtkomst nödvändig
- Fungerar med alla DNS-leverantörer
Begränsningar
- Port 80 måste vara öppen utifrån
- Kan inte användas för wildcards
- Redirects från HTTP till HTTPS är inte tillåtna under validering
- Alla SAN-namn måste svara på samma server
DNS-01
Rekommenderad
Skapar en TXT-post _acme-challenge.domän i er DNS. Fungerar bakom brandväggar och för wildcards.
Fördelar
- Fungerar bakom brandväggar, inga öppna portar nödvändiga
- Stöder wildcards
- Servern behöver inte exponeras mot internet
Krav
- DNS-leverantörens API, acme-dns, CNAME-delegering eller script
- Se FairSSL AutoDNS för den enklaste lösningen
TLS-ALPN-01
Presenterar ett självsignerat certifikat på port 443 med ALPN-extension (RFC 8737).
Fördelar
- Behöver inte port 80
- Fungerar när HTTP är avaktiverat
Begränsningar
- Kräver att simple-acme tillfälligt binder port 443
- Kan inte användas för wildcards
- IIS måste stoppas under validering
DNS-plugins (23+ leverantörer)
Simple-acme stöder automatisk DNS-validering med följande leverantörer via pluggable-versionen:
FairSSL AutoDNS: Om er DNS-leverantör inte finns på listan, eller om ni inte vill ge DNS API-nycklar till servern,
kan ni använda FairSSL AutoDNS.
Skapa en permanent CNAME-post _dnsauth.ert-doman som pekar på FairSSLs valideringstjänst. Därefter sköter FairSSL DNS-valideringen automatiskt, utan nycklar eller scripts.
Nyckeltyper och storlekar
Simple-acme stöder RSA och ECDSA-nycklar. Valet påverkar handshake-hastighet, bandbredd och framtidssäkerhet.
| Nyckeltyp | CLI-flagga | Standard | Vår rekommendation |
|---|---|---|---|
| RSA | --csr rsa | 3072 bit (SHA-512) | 4096 bit, enbart för äldre klienter |
| ECDSA | --csr ec | P-384 (secp384r1) | P-384 för nya installationer |
Vår rekommendation: ECDSA P-384. Starkare än RSA 3072 med en bråkdel av nyckelstorleken. Snabbare handshakes, lägre CPU-belastning, mindre certifikat. Alla moderna webbläsare, operativsystem och servrar stöder ECDSA. P-384 är simple-acmes standard för EC.
Undvik RSA 2048 om möjligt. ECDSA är snabbare och mer framtidssäkert. CA/Browser Forum har diskuterat att höja minimigränsen för RSA, men inget har beslutats ännu. Om du måste använda RSA, välj 3072 bit eller högre. Se vår guide till nyckeltyper för detaljer.
Simple-acmes standard är P-384 för EC, som vi rekommenderar. Om ni behöver ändra nyckeltyp kan det göras via settings.json:
{
"CSR": {
"EC": {
"CurveName": "secp384r1"
}
}
} IIS binding-hantering
Det enklaste tillvägagångssättet är att använda --installation iis. Simple-acme hittar automatiskt de IIS-sites
som har värdnamn som matchar certifikatets domännamn, och uppdaterar deras HTTPS-bindings.
Automatiskt (rekommenderad)
Utan --siteid hittar simple-acme själv de sites som passar:
simple-acme.exe --source iis --installation iis
Detta fungerar inte på default sites utan värdnamn. Där måste du antingen manuellt uppdatera binding eller ange --siteid.
Specifik site
Ange site-ID för att binda certifikatet till en specifik IIS-site. ID:t hittar du i IIS Manager under Sites-mappen:
simple-acme.exe --source iis --siteid 1 --installation iis
Flera sites (SNI)
IIS 8+ stöder Server Name Indication (SNI), som tillåter flera certifikat på samma IP och port. Simple-acme skapar SNI-bindings automatiskt. Ange flera site-ID:n med komma:
simple-acme.exe --source iis --siteid 1,2,3 --installation iis
Du kan också skapa separata förnyelser per site. Varje certifikat får sin egen .renewal.json-fil
och förnyas oberoende.
IIS Central Certificate Store (CCS)
För webbfarmar med flera IIS-servrar kan du använda Central Certificate Store. Certifikat exporteras som PFX-filer till en delad filresurs, och alla IIS-servrar hämtar dem därifrån:
simple-acme.exe --source iis --store centralssl ^ --centralsslstore "\\\\fileserver\\certs" ^ --installation iis
Task Scheduler och förnyelse
Simple-acme skapar en Windows Task Scheduler-uppgift vid första certifikatet. Uppgiften körs dagligen och förnyar certifikat som närmar sig utgång.
Viktigt: Scheduled task och settings.json måste stämma överens. Körningstidpunkt, slumpmässig fördröjning
och sökvägar måste matcha på båda ställena. Om ni ändrar inställningar på det ena stället måste det andra uppdateras.
Avvikelser mellan de två är en av de vanligaste orsakerna till att förnyelse misslyckas i tysthet.
Standardinställningar
- Körningstidpunkt
- 09:00 + slumpmässig fördröjning
- Slumpmässig fördröjning
- upp till 4 timmar
- Max körtid
- 2 timmar
- Förnyelse vid
- 55 dagar kvar
Med ARI (FairSSL)
När ARI är aktiverat (automatiskt med FairSSL) kontrollerar simple-acme dagligen hos CA:n efter det optimala förnyelsetillfället. CA:n kan signalera tidig förnyelse vid säkerhetshändelser.
FairSSL övervakar ARI check-ins och kan kontakta er om en klient slutar checka in.
Vi rekommenderar att sätta RenewalDays till 365 i settings.json,
eftersom ARI bestämmer rätt förnyelsetidpunkt. Om ARI inte är tillgängligt har simple-acme en
inbyggd backup på 7 dagar före utgång. RenewalDays är bara en fallback.
Kör förnyelse utanför produktionstid.
Med 200-dagars certifikat (2026) och kommande 100-dagars (2027) och 47-dagars (2029) livslängder blir
förnyelsefrekvensen högre. Planera Task Scheduler att köra tidigt på morgonen eller sent på kvällen,
så att eventuella valideringsfel kan hanteras innan normal arbetstid.
Justera i settings.json:
"ScheduledTask": {
"StartBoundary": "05:00:00",
"RandomDelay": "01:00:00"
} Kort certifikatlivslängd (47 dagar från 2029)
Med 47-dagars certifikatlivslängd från mars 2029 måste förnyelse köras oftare och pålitligt. Simple-acme med ARI hanterar detta automatiskt. CA:n bestämmer det optimala förnyelsetillfället, och klienten följer det. Vi rekommenderar att testa er uppsättning noggrant nu, medan certifikat fortfarande har 200 dagars livslängd, så att ni är redo för de kortare livslängderna.
Post-förnyelse-scripts
Simple-acme kan köra scripts efter en lyckad förnyelse. Använd detta när certifikatet ska distribueras till tjänster utanför IIS: RDP Gateway, Exchange, SQL Server, nätverksutrustning eller andra servrar.
Scriptet tar emot certifikatinformation som parametrar. De viktigaste variablerna:
| Variabel | Beskrivning |
|---|---|
| {CertThumbprint} | SHA-1 thumbprint för det nya certifikatet |
| {CacheFile} | Sökväg till PFX-filen i cache |
| {CachePassword} | Lösenord till PFX-filen |
| {CertFriendlyName} | Certifikatets friendly name |
| {StorePath} | Sökväg till PEM/PFX-exportmapp |
Exempel: RDP Gateway-binding
PowerShell-script som binder det nya certifikatet till RD Gateway efter förnyelse:
# deploy-rdgateway.ps1
param(
[string]$Thumbprint
)
# Bind till RD Gateway
$gwConfig = Get-Item "RDS:\GatewayServer\SSLCertificate"
Set-Item "RDS:\GatewayServer\SSLCertificate\Thumbprint" -Value $Thumbprint
# Starta om RD Gateway-tjänsten
Restart-Service TSGateway -Force
Write-Host "RD Gateway certificate updated: $Thumbprint"
Konfigurera i simple-acme: --installation script --script "C:\\scripts\\deploy-rdgateway.ps1" --scriptparameters "{CertThumbprint}"
Exempel: SQL Server (rättigheter till privat nyckel)
SQL Server kräver att dess tjänstanvändare har läsåtkomst till certifikatets privata nyckel. Vid varje förnyelse genereras en ny nyckel, och rättigheterna måste sättas igen. Detta script tilldelar rättigheter och startar om SQL:
# deploy-sqlserver.ps1
param(
[string]$Thumbprint
)
# Hitta certifikatet i Certificate Store
$cert = Get-ChildItem "Cert:\LocalMachine\My\$Thumbprint"
$keyPath = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
$fullPath = "$env:ProgramData\Microsoft\Crypto\RSA\MachineKeys\$keyPath"
# Ge SQL Server-tjänstkontot läsåtkomst till privat nyckel
$acl = Get-Acl $fullPath
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"NT Service\MSSQLSERVER", "Read", "Allow"
)
$acl.AddAccessRule($rule)
Set-Acl $fullPath $acl
# Uppdatera SQL Server att använda det nya certifikatet
# (kräver SQL Server Configuration Manager eller registret)
Restart-Service MSSQLSERVER -Force
Write-Host "SQL Server certificate updated: $Thumbprint"
Anpassa NT Service\\MSSQLSERVER till er SQL Server-tjänstanvändare om den körs under ett annat konto.
Felsökning
HTTP-01-validering misslyckas
Kontrollera att port 80 är öppen i Windows Firewall och eventuell extern brandvägg. Simple-acme måste kunna binda port 80 (selfhosting) eller skriva till IIS webroot (filesystem). Redirects från HTTP till HTTPS är inte tillåtna under validering. Kontrollera IIS URL Rewrite-regler. Om servern är bakom en load balancer, överväg DNS-validering istället.
DNS-01-validering misslyckas (timeout)
DNS-propagation kan ta 30-300 sekunder beroende på leverantör. Kontrollera att TXT-posten _acme-challenge.ert-doman
är synlig med nslookup -type=TXT _acme-challenge.ert-doman. Om du använder CNAME-delegering (AutoDNS),
kontrollera att CNAME-posten pekar korrekt. Höj eventuellt DnsPropagationDelay i settings.json.
Certifikatet installeras, men IIS använder det gamla
Kontrollera att --installation iis finns med i förnyelsekonfigurationen. Öppna .renewal.json-filen och verifiera
att InstallationPluginOptions innehåller IIS-konfigurationen. Alternativt: kör simple-acme.exe --renew --force för att tvinga förnyelse.
Task Scheduler körs, men certifikat förnyas inte
Kontrollera loggfilerna i simple-acmes loggmapp (standard: %ProgramData%\simple-acme\logs). De vanligaste orsakerna:
kontot som kör uppgiften har inte rättigheter till IIS, DNS API-nycklar har löpt ut, eller certifikatet har inte nått förnyelsedatumet
(standard: 55 dagar innan utgång). Kör manuellt med --renew --verbose för att se detaljerad utdata.
CAA-post blockerar utfärdande
Om ni har CAA DNS-poster måste de tillåta den CA som utfärdar certifikatet. FairSSL använder DigiCert, GlobalSign och Sectigo som CA:er. Använd vår CAA Record Generator för att generera korrekta CAA-poster för ert domän.
Relaterat innehåll
ACME-klienter
Jämförelse av alla rekommenderade ACME-klienter för Windows, Linux och moln.
FairSSL AutoDNS
Automatisk DNS-validering via permanent CNAME. Inga DNS API-nycklar nödvändiga.
Windows ACME-konfiguration
Generell Windows Server ACME-guide för IIS, Exchange, RDP och SQL Server.
SSL-certifikatlivslängd
200 dagar (2026), 100 dagar (2027), 47 dagar (2029). Tidslinje och förberedelse.
CAA Record Generator
Generera CAA DNS-poster för ert domän. Kontrollera vilka CA:er som får utfärda certifikat.
Vad är SSL?
Komplett guide till SSL/TLS: nyckeltyper, certifikatkedjor, validering och säkerhet.
Vanliga frågor om simple-acme
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
--source manual med de relevanta värdnamnen (mail.example.com, autodiscover.example.com) och --installation iis för IIS-fronten. Exchange använder IIS internt, så certifikatet binds via IIS. Du kan även använda --store pemfiles för att exportera till andra format om Exchange kräver det.--source iis --siteid 1,2,3. Varje certifikat får sin egen .renewal.json-fil och förnyas oberoende. SNI (Server Name Indication) i IIS 8+ säkerställer att varje site får rätt binding.--friendlyname är unikt för varje certifikat.Kom igång med SSL-automatisering
Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.