Example: Win-ACME with IIS using HTTP-01 Domain Validation
Windows Server / IIS — This guide walks through configuring Win-ACME to request and install a certificate using HTTP-01 validation and your GeoCerts ACME Directory URL.
GeoCerts recommends the DigiCert ACME Client for new deployments. Use this page if you already rely on Win-ACME. For the DAC walkthrough on the same stack, see IIS with HTTP-01 (Windows).
Acronyms used on this guide
| Term | Meaning |
|---|---|
| ACME | Automated Certificate Management Environment — the protocol used to automate certificate issuance and renewal |
| ADU | ACME Directory URL — the endpoint and credential profile you create in CertCommand under Automation > ACME Directory URLs |
| EAB | External Account Binding — Key ID and HMAC credentials that authenticate your ACME client to GeoCerts |
| DCV | Domain Control Validation — proof that you control a domain name (via a DNS-01 or HTTP-01 challenge) |
| MPIC | Multi-Perspective Issuance Correlation — DigiCert validates DCV from multiple global network locations See SSL Domain Validation (DCV) Rules Have Changed. |
| DAC | DigiCert ACME Client — GeoCerts' recommended ACME client (`dc-acme`) |
| ARI | ACME Renewal Information — optional CA-directed schedule for when to renew a certificate |
Sandbox or production. You can run these examples with a sandbox or production ACME Directory URL. Sandbox requests are not billed—useful for proving EAB and HTTP-01 before you create real orders. Prefer the Sandbox Walkthrough (Windows/IIS) if you want a DAC-guided path first.
Command environment: Run Win-ACME from an elevated PowerShell session (Run as Administrator).
Prerequisites
Before you begin, make sure you have:
- An ACME Directory URL with its EAB Key ID and EAB HMAC Key—sandbox or production (sandbox is fine for experimentation).
- Windows Server with IIS installed and a site listening on port 80 for the hostname you are securing.
- The domain’s A record points at this host and port 80 is publicly reachable from multiple regions worldwide under MPIC requirements.
- Win-ACME v2.2.9+ (Pluggable release preferred).
Step 1: Download Win-ACME
Download the latest Pluggable release from the Win-ACME documentation site and unzip it—for example:
C:\Tools\win-acme\
Step 2: Launch Win-ACME with DigiCert ACME Directory URL
Open PowerShell as Administrator, change to the Win-ACME directory, and run:
# Launch Win-ACME with DigiCert ACME Directory URL
.\wacs.exe --baseuri "https://one.digicert.com/mpki/api/v1/acme/v2/directory"
Always set --baseuri. If you omit it, Win-ACME defaults to Let's Encrypt. Use your sandbox directory URL when experimenting (not billed); use your production URL when you are ready for billable certificates. The saved --baseuri is reused for renewals and reissues—you typically enter it once per certificate lifecycle.
At the interactive menu, choose:
M: Create certificate (full options)
Step 3: Choose Domain Source
Select how Win-ACME discovers hostnames:
1: Read bindings from IIS
Win-ACME scans IIS and lists bindings it finds—for example:
Found binding: shop.example.com
Select the hostnames to include. Ensure each name resolves publicly to this server.
When prompted to split the source into multiple certificates, choose 4: Single certificate for most environments unless you have a specific reason to split.
Step 4: Validation Method
Choose:
2: [http] Serve verification files from memory
Win-ACME temporarily serves the .well-known/acme-challenge token from memory. Port 80 must be reachable from the internet.
Step 5: Choose Key Type
When prompted for CSR key type:
1: Elliptic Curve key
2: RSA key
Choose 2: RSA key unless you have a specific need for EC keys. RSA is the safe default for IIS.
Step 6: Choose Certificate Store Location
When asked where to store the issued certificate:
1: IIS Central Certificate Store (.pfx per host)
2: PEM encoded files (Apache, nginx, etc.)
3: PFX archive
4: Windows Certificate Store (Local Computer)
5: No (additional) store steps
Choose 4: Windows Certificate Store (Local Computer) for typical IIS deployments.
Win-ACME then asks which store:
1: [WebHosting] - Dedicated store for IIS
2: [My] - General computer store (for Exchange/RDS)
3: [Default] - Use global default, currently WebHosting
Select 3: [Default] unless you use a dedicated store.
For additional storage, choose 5: No (additional) store steps.
Step 7: Installation
Select:
1: Create or update IIS bindings
Win-ACME binds the issued certificate to your IIS site.
Step 8: ACME Account and EAB Credentials
When prompted to create an ACME account, enter your External Account Binding Key ID and HMAC Key from CertCommand.
EAB credentials are shown once. You receive them when you create your ACME Directory URL. If you did not save them, they cannot be retrieved—create a new ACME Directory URL to generate a fresh pair.
Step 9: Complete the Order
Win-ACME will:
- Create your ACME account (if needed)
- Validate the domain via HTTP-01
- Request the certificate
- Install it to the Windows Certificate Store
- Bind it to your IIS site
Sample output:
[INFO] Authorizing identifier shop.example.com using http-01
[INFO] Answer should now be browsable at http://shop.example.com/.well-known/acme-challenge/xyz...
[INFO] Authorization result: valid
[INFO] Requesting certificate shop.example.com
[INFO] Store with CertificateStore
[INFO] Installing with IIS
[INFO] Adding new https binding shop.example.com:443
[INFO] Installation step complete
[INFO] Adding renewal for shop.example.com
[INFO] Renewal added
Authorization result: valid
Order status: valid
Certificate installed successfully
Confirm the order in CertCommand under Certificates > Orders.
Step 10: Test HTTPS
Browse to https://yourdomain.com and confirm:
- HTTPS loads without errors
- The certificate issuer is DigiCert, GeoTrust, or Thawte
You can also use the GeoCerts SSL Checker.
Step 11: Automatic Renewals
Win-ACME adds a scheduled task for renewals. Check it:
# List Win-ACME renewal scheduled task
schtasks /Query /TN "win-acme renewals"
To renew manually:
# Run renewal manually (uses saved renewal configuration)
.\wacs.exe --renew --baseuri "https://one.digicert.com/mpki/api/v1/acme/v2/directory"
Automatic renewal. The DigiCert ACME directory supports ARI (renewalInfo). Win-ACME uses it by default when its scheduled task runs (RenewalDisableServerSchedule: false). On each renewal attempt, DigiCert still applies auto-detection rules—do not change CN or SAN lists on non-wildcard certificates unless you intend a new billable order.
Troubleshooting
Common issues:
- Port 80 blocked — HTTP-01 requires public reachability on port 80 from multiple regions (MPIC).
- Wrong ACME server — Confirm
--baseuripoints at your DigiCert directory URL, not Let’s Encrypt. - DNS — The hostname must resolve to this server’s public IP.
- IIS bindings — The site must listen on port 80 for the hostname being validated.
For EAB, DCV, and installation diagnosis patterns (applicable across clients), see Verify and Diagnose ACME Requests. For unexpected new orders on renewal, see Troubleshooting — Unexpected new orders.
Related topics
- Alternative ACME Clients — Hub and Certbot example
- IIS with HTTP-01 (Windows) — DAC production walkthrough
- Create an ACME Directory URL — EAB credential mapping across clients
- Win-ACME documentation
← Back to Alternative ACME Clients