Win-ACME SSL Certificate Installation Guide — Step-by-Step Setup for Windows Servers

Mar 26, 2026
What is Win-ACME?

Win-ACME (formerly known as WACS) is a free, open-source tool for Windows that automatically gets and renews SSL certificates for your websites and servers. Instead of manually buying and installing certificates every year, Win-ACME handles the whole process for you — including creating the necessary DNS records, downloading the certificate, and even installing it into IIS (Windows web server).

Think of it like a personal assistant for your SSL certificates — it requests them, proves you own the domain, and keeps them fresh automatically.

???? Note: SSL certificates are the technology that enables the padlock icon in web browsers, showing visitors your site is secure. Without one, browsers may warn users that your website is 'Not Secure'.

Before You Begin — What You Need

Before installing Win-ACME, make sure you have all of the following ready. Think of this as your checklist before you start cooking — gather all your ingredients first!

2.1   Compatible Windows Version

Your computer or server must be running one of the following:

  • Windows Server 2012 R2 or newer (Server 2016, 2019, 2022 are all fine)
  • Windows 8.1 or newer (Windows 10, Windows 11 also work)
2.2   .NET Framework 4.7.2 or Higher

.NET Framework is a software platform made by Microsoft that Win-ACME needs to run. Think of it like a required app on your phone before another app can work.

Good news: If you are using Windows 10 version 1803 or newer, .NET Framework is already included. If you are on an older system, you may need to install it.

To check if you already have it, open PowerShell as Administrator and run this command:

PowerShell / Command
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 461808

# If this shows: True --> You are good to go!
# If this shows: False --> You need to install .NET Framework 4.8

If the result says False, install .NET Framework 4.8 using this command (it will open the download page in your browser):

PowerShell / Command
Start-Process "https://go.microsoft.com/fwlink/?LinkId=2085155"

# Download and run the installer, then restart your computer
2.3   Administrator Privileges

You must be logged in as an Administrator (or run PowerShell as Administrator). This is required to install software and create system-level scheduled tasks.

? Tip: To open PowerShell as Administrator: Click Start, type PowerShell, right-click it, and choose 'Run as administrator'.
2.4   Cloudflare API Token (or Other DNS Provider Credentials)

Win-ACME proves you own your domain by automatically creating a special DNS record. To do this, it needs permission to make changes to your DNS settings. For Cloudflare users, this is done through an API Token.

Don't worry — you don't need to create this now. We'll walk you through it step by step in a later section.

2.5   EAB Credentials from Your ACME Server Administrator

EAB stands for External Account Binding. These are two special codes (a Key Identifier and a Key) that link your Win-ACME installation to your organisation's ACME certificate server. You get these from your IT administrator or the team that manages your ACME server.

???? Note: If you are unsure what EAB credentials are or where to get them, contact your system administrator before proceeding.

Installing Win-ACME

Now that everything is in place, let's install Win-ACME. You have two options — manual (do it yourself) or automated (let PowerShell do it).

Step 1: Create the Installation Folder

First, create a folder where Win-ACME will live on your computer. Open PowerShell as Administrator and run:

PowerShell / Command
New-Item -ItemType Directory -Path "C:\Tools\win-acme" -Force

# This creates the folder C:\Tools\win-acme
Option A: Download Manually (Recommended for Beginners)
  • Open your web browser and visit: https://github.com/win-acme/win-acme/releases/latest
  • Look for a file named something like: win-acme.v2.x.x.xxxx.x64.pluggable.zip
  • Click on it to download the ZIP file
  • Once downloaded, extract (unzip) its contents into the C:\Tools\win-acme folder
Option B: Download Automatically with PowerShell

If you prefer, PowerShell can download and extract Win-ACME for you in one go. Run this in your Administrator PowerShell window:

PowerShell / Command
$installPath = "C:\Tools\win-acme"

New-Item -ItemType Directory -Path $installPath -Force

# Find and download the latest version automatically
$latestRelease = Invoke-RestMethod -Uri "https://api.github.com/repos/win-acme/win-acme/releases/latest"

$downloadUrl = $latestRelease.assets | Where-Object { $_.name -like "*pluggable.zip" } | Select-Object -ExpandProperty browser_download_url

Write-Host "Downloading Win-ACME from: $downloadUrl"

$zipPath = "$env:TEMP\win-acme.zip"

Invoke-WebRequest -Uri $downloadUrl -OutFile $zipPath

# Extract the ZIP file
Expand-Archive -Path $zipPath -DestinationPath $installPath -Force

Remove-Item $zipPath

Write-Host "Win-ACME installed at: $installPath"
Step 2: Verify the Installation

Let's make sure Win-ACME installed correctly. Run these commands:

PowerShell / Command
cd C:\Tools\win-acme

.\wacs.exe --version

If everything worked, you should see something like:

Expected Output
Win-ACME version 2.x.x.x (RELEASE)
???? Note: If you see an error like 'wacs.exe is not recognized', make sure you extracted the ZIP file into the correct folder (C:\Tools\win-acme) and that you are in that directory in PowerShell.

Setting Up Configuration and Credentials

Now we need to tell Win-ACME how to connect to your ACME certificate server and your DNS provider. We'll store this information in a secure configuration file so it can be used automatically.

Step 3: Create a Configuration Folder

This folder will hold your settings securely. Run this command:

PowerShell / Command
New-Item -ItemType Directory -Path "C:\ProgramData\win-acme-config" -Force
Step 4: Create the Credentials File

Next, we create a text file that stores all the important settings in one place. This includes your ACME server address, your login credentials (EAB keys), your email address, your Cloudflare API token, and where to save your certificates.

Copy and paste this command into PowerShell. Replace each XXXX... placeholder with your actual values:

PowerShell / Command
@"
# ACME Server Configuration
ACME_SERVER=https://acme.example.com/acme/directory
EAB_KEY_IDENTIFIER=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EAB_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EMAIL=admin@example.com

# Cloudflare API Token (or other DNS provider)
CF_API_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# Certificate Storage
CERT_PATH=C:\ssl-certs
"@ | Out-File -FilePath "C:\ProgramData\win-acme-config\acme-credentials.txt" -Encoding UTF8
???? Note: You will get your EAB_KEY_IDENTIFIER and EAB_KEY from your ACME server administrator. Your ACME_SERVER URL and EMAIL should also be provided by your IT team.
Step 5: Secure the Credentials File

Since this file contains sensitive information (like API tokens and keys), we need to make sure only administrators can read it. Run this to lock down the permissions:

PowerShell / Command
$acl = Get-Acl "C:\ProgramData\win-acme-config"

$acl.SetAccessRuleProtection($true, $false)

$adminRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"BUILTIN\Administrators", "FullControl",
"ContainerInherit,ObjectInherit", "None", "Allow")

$acl.SetAccessRule($adminRule)

Set-Acl "C:\ProgramData\win-acme-config" $acl

Write-Host "Permissions secured!"
Step 6: Load Credentials into PowerShell

When you need to use Win-ACME, run this command first to load your settings into the current session. Think of this like logging in — it makes your credentials available for use:

PowerShell / Command
$config = Get-Content "C:\ProgramData\win-acme-config\acme-credentials.txt" | ConvertFrom-StringData

$env:ACME_SERVER = $config.ACME_SERVER
$env:EAB_KEY_IDENTIFIER = $config.EAB_KEY_IDENTIFIER
$env:EAB_KEY = $config.EAB_KEY
$env:EMAIL = $config.EMAIL
$env:CF_API_TOKEN = $config.CF_API_TOKEN
$env:CERT_PATH = $config.CERT_PATH

Write-Host "Credentials loaded successfully!"

Creating the Certificate Storage Folder

This is where Win-ACME will save the SSL certificates it downloads. Think of it as a secure filing cabinet for your certificates.

Step 7: Create the Storage Directory
PowerShell / Command
New-Item -ItemType Directory -Path "C:\ssl-certs" -Force
Step 8: Set Permissions for IIS (Web Server Access)

If you are using IIS (Internet Information Services — Windows' built-in web server), it needs permission to read the certificates from this folder. Run this to grant access:

PowerShell / Command
$acl = Get-Acl "C:\ssl-certs"

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"BUILTIN\IIS_IUSRS", "ReadAndExecute",
"ContainerInherit,ObjectInherit", "None", "Allow")

$acl.AddAccessRule($rule)

Set-Acl "C:\ssl-certs" $acl

Write-Host "IIS permissions configured!"
???? Note: If you are not using IIS, you can skip Step 8. The certificate folder will still be created and usable.

6. Configuring Your DNS Provider

Win-ACME needs to temporarily create a DNS record to prove to the certificate authority that you own your domain. This is done automatically — but it needs your API credentials to make changes to your DNS settings.

Cloudflare Setup (Most Common)

If your domain's DNS is managed through Cloudflare, follow these steps to create an API Token:

  1. Open your browser and go to: https://dash.cloudflare.com
  2. Log in to your Cloudflare account
  3. Click on your profile icon (top right) and select My Profile
  4. In the left menu, click API Tokens
  5. Click the Create Token button
  6. Choose the Edit zone DNS template
  7. Under Permissions, make sure it says: Zone / DNS / Edit
  8. Under Zone Resources, select: Include ? Specific zone ? [choose your domain]
  9. Click Continue to summary, then Create Token
  10. IMPORTANT: Copy the token immediately — Cloudflare will only show it once!
  11. Paste this token as the CF_API_TOKEN value in your credentials file
Testing Your Cloudflare API Token

Before proceeding, let's confirm your API token works correctly:

PowerShell / Command
$token = "YOUR_CLOUDFLARE_TOKEN_HERE"

$headers = @{ "Authorization" = "Bearer $token" }

$response = Invoke-RestMethod -Uri "https://api.cloudflare.com/client/v4/user/tokens/verify" -Headers $headers

$response.result.status

# Should show: active
? Tip: If the result says 'active', your token is working correctly! If you see an error, double-check that you copied the full token with no spaces.
Other DNS Providers

Win-ACME supports over 20 DNS providers. Here is a quick overview of what each requires:

Provider What You Need Plugin Flag
Cloudflare API Token --validation cloudflare
Azure DNS Subscription ID, Tenant ID, Client ID, Client Secret --validation azure
GoDaddy API Key and API Secret --validation godaddy
AWS Route53 IAM Role ARN or Access Key / Secret Key --validation route53
Manual (No API) None required — you create records by hand --validation dns-01 --validationmode manual

For a full list of supported DNS providers, visit: https://www.win-acme.com/reference/plugins/validation/


Verifying Everything Works

Before you start issuing certificates, let's run a few quick checks to make sure everything is set up correctly. This is like a final pre-flight checklist before takeoff.

Check 1: Verify Win-ACME Version
PowerShell / Command
cd C:\Tools\win-acme

.\wacs.exe --version

# Expected result: Win-ACME version 2.x.x.x (RELEASE)
Check 2: Confirm Your Configuration Loaded

Run this to see your settings are correctly saved in the credentials file:

PowerShell / Command
$config = Get-Content "C:\ProgramData\win-acme-config\acme-credentials.txt" | ConvertFrom-StringData

Write-Host "ACME Server : $($config.ACME_SERVER)"
Write-Host "Email : $($config.EMAIL)"
Write-Host "Cert Path : $($config.CERT_PATH)"

You should see your ACME server URL, email address, and certificate path printed on screen.

Check 3: Test Cloudflare DNS Access

Verify that your Cloudflare API token can connect successfully:

PowerShell / Command
$config = Get-Content "C:\ProgramData\win-acme-config\acme-credentials.txt" | ConvertFrom-StringData

$headers = @{ "Authorization" = "Bearer $($config.CF_API_TOKEN)" }

Invoke-RestMethod -Uri "https://api.cloudflare.com/client/v4/user/tokens/verify" -Headers $headers

# Status should show: active
Check 4: Test ACME Server Connectivity

Finally, make sure your server can reach the ACME certificate server:

PowerShell / Command
$config = Get-Content "C:\ProgramData\win-acme-config\acme-credentials.txt" | ConvertFrom-StringData

Invoke-RestMethod -Uri $config.ACME_SERVER

# Should return a JSON response with newAccount, newOrder, etc.

A successful response looks like this:

Expected Output
{
"keyChange": "https://acme.example.com/acme/key-change",
"newAccount": "https://acme.example.com/acme/new-account",
"newNonce": "https://acme.example.com/acme/new-nonce",
"newOrder": "https://acme.example.com/acme/new-order",
"revokeCert": "https://acme.example.com/acme/revoke-cert",
"meta": { "externalAccountRequired": true }
}
? Tip: If you get a valid JSON response from the ACME server, you are all set! Your installation is working correctly.

Installation Checklist

Use this checklist to confirm every step has been completed:

Done? Task
? Windows Server 2012 R2+ or Windows 8.1+ is installed
? .NET Framework 4.7.2 or higher is installed and verified
? PowerShell is running with Administrator privileges
? Win-ACME downloaded and extracted to C:\Tools\win-acme
? Win-ACME version confirmed with .\wacs.exe --version
? Configuration folder created at C:\ProgramData\win-acme-config
? Credentials file created with ACME server details
? EAB Key Identifier and EAB Key received from ACME server admin
? DNS provider API token/credentials obtained and added to credentials file
? Credentials file permissions secured (Administrators only)
? Certificate storage folder created at C:\ssl-certs
? IIS permissions configured for certificate storage (if using IIS)
? Credentials loaded and printed successfully to PowerShell
? DNS provider API access verified (status: active)
? ACME server connectivity verified (JSON response received)

Troubleshooting Common Problems

Something not working? Don't panic — here are the most common issues and exactly how to fix them.

?? Problem 1: .NET Framework Not Found

Error message you may see:

This application requires .NET Framework 4.7.2 or higher

How to fix it:

  • Download .NET Framework 4.8 from: https://go.microsoft.com/fwlink/?LinkId=2085155
  • Run the installer and follow the on-screen steps
  • Restart your computer after installation completes
  • Re-run the .NET check command to confirm it now shows True
?? Problem 2: PowerShell Scripts Are Blocked

Error message you may see:

cannot be loaded because running scripts is disabled on this system

How to fix it:

  • Open PowerShell as Administrator
  • Run this command: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Type Y and press Enter to confirm
  • Try running your script again
?? Problem 3: Access Denied When Creating Folders

Error message you may see:

Access to the path 'C:\Tools\win-acme' is denied

How to fix it:

  • You need to run PowerShell as Administrator
  • Close your current PowerShell window
  • Click Start ? type PowerShell ? right-click ? Run as administrator
  • Try the command again
?? Problem 4: Cloudflare API Token Not Working

Error message you may see:

Authentication error: Invalid API token

How to fix it:

  • Check the token has not expired (Cloudflare tokens can have expiry dates)
  • Verify the token has the correct permission: Zone / DNS / Edit
  • Make sure the token is for the correct domain/zone
  • If unsure, delete the old token in Cloudflare and create a new one
  • Copy the new token carefully — no extra spaces
?? Problem 5: Cannot Connect to ACME Server

Error message you may see:

Unable to connect to the remote server

How to fix it:

  • Double-check that your ACME server URL is correct in the credentials file
  • Make sure your firewall allows outbound connections on port 443 (HTTPS)
  • Test connectivity with: Test-NetConnection acme.example.com -Port 443
  • If the connection test fails, contact your network administrator
  • Contact your ACME server administrator to confirm the server is online

You're Done! What Comes Next?

Congratulations — Win-ACME is now fully installed and configured on your system! Here's a quick summary of what you've accomplished:

  • Installed Win-ACME and confirmed it runs correctly
  • Created a secure credentials file with your ACME server details
  • Configured your DNS provider (Cloudflare or other) for automatic verification
  • Set up certificate storage with the right permissions
  • Verified all connections are working

Your next step is to issue your first SSL certificate. This is covered in the Deployment Guide (DEPLOYMENT_GUIDE.md), which walks you through:

  1. Requesting and issuing your first certificate
  2. Installing it automatically into IIS
  3. Setting up automatic renewal so certificates never expire
  4. Monitoring and maintaining your certificates over time
???? Note: Win-ACME creates a Windows Scheduled Task that automatically renews your certificates before they expire. You don't need to do anything manually — it runs in the background!
Useful Links

If you need help or run into an issue not covered in this guide, contact your ACME server administrator for support.


Have any Questions

Call HTTPS

If you have any questions, feel free to call us