In short
To install a free Let's Encrypt SSL certificate on IIS with win-acme, first make sure the website works over HTTP, the hostname resolves to your Windows Server, and TCP 80 is reachable for HTTP-01 validation. Then run wacs.exe, select the IIS site, let the client create the HTTPS binding, and verify the renewal task.
There is one important 2026 update: win-acme's last release line is 2.2.9.1, while simple-acme is now the actively maintained successor from the same maintainer and is designed as a backwards-compatible, drop-in replacement. Existing win-acme installations can still follow this guide. For a brand-new deployment, also evaluate simple-acme before you standardize on win-acme.
Quick verdict
| Situation | What to do |
|---|---|
| Existing win-acme installation is working | Keep it stable, verify renewal, and document the installed version |
| New IIS server in 2026 | Evaluate simple-acme as the maintained successor before choosing the client |
| IIS site already works over HTTP | Proceed to DNS and ACME validation |
| Site only has blank IIS bindings | Add the hostname you want to secure |
| DNS still points to another server | Fix DNS before requesting the certificate |
| Port 80 is closed | Open it for HTTP-01 validation, or use a different challenge method |
| Port 443 is closed | Open it before final HTTPS testing |
| ACME client is stored in Downloads | Move it to a permanent folder before configuring renewal |
| Renewal task is missing | Recreate the task and run a forced renewal test |
The certificate request itself is usually the easy part. Most failures come from DNS, IIS bindings, HTTP validation, or renewal configuration.
What is win-acme?
win-acme is an ACMEv2 client for Windows. It can request SSL/TLS certificates from certificate authorities such as Let's Encrypt, store them in Windows, update IIS HTTPS bindings, and create a scheduled task to renew certificates automatically.
That IIS integration is why win-acme became popular for Windows Server administrators: you can go from an HTTP IIS binding to a Let's Encrypt certificate and automatic renewal without manually exporting and rebinding a new certificate every few months.
Is win-acme still current in 2026?
The final win-acme release line is 2.2.9.1. The project has since been succeeded by simple-acme, which the maintainer describes as the technical and spiritual successor to win-acme and a backwards-compatible drop-in replacement.
For this reason:
- If win-acme is already installed and renewing certificates correctly, you do not need to replace it just to complete this guide.
- If you are building a new IIS server in 2026, compare win-acme with simple-acme before you standardize your automation.
- If you migrate, test all renewals after the change instead of assuming that an old scheduled task still points to the right executable and configuration.
This guide keeps win-acme as the primary workflow because many administrators still search for and operate existing win-acme installations.
What we tested on Raff
We tested the IIS and win-acme workflow on a Raff Windows VPS running Windows Server with IIS installed.

| Item | Value |
|---|---|
| Provider | Raff Technologies |
| OS | Windows Server 2025 Datacenter Evaluation |
| Web server | IIS 10 |
| ACME client tested | win-acme 2.2.9.1701 |
| win-acme release line | 2.2.9.1 |
| Validation method | HTTP-01 / IIS workflow |
| Original lab test | 2026-05-26 |
| Article re-verified | 2026-09-01 |
| Tester | Serdar Tekin |
In the lab, we verified:
- IIS installed and running
- IIS bindings visible from PowerShell
- Windows Firewall rules for HTTP and HTTPS
- win-acme starting successfully
- connection to the ACME service
- the expected certificate creation and IIS binding workflow
- the renewal and scheduled-task workflow
Some certificate creation screenshots in this guide are illustrative examples. In production, use your real hostname and verify DNS before requesting a certificate.
What you'll need
- A Windows Server 2022 or Windows Server 2025 VPS
- Local administrator access over RDP
- IIS installed with at least one working site
- A public domain or subdomain, such as
app.example.com - DNS access for that domain
- TCP 80 reachable for the HTTP-01 workflow used in this guide
- TCP 443 reachable for the final HTTPS service
- win-acme already installed, or an ACME client selected for a new deployment
- About 30-45 minutes for the first setup and validation
This guide assumes your IIS site works over plain HTTP before certificate issuance.
If you still need the Windows server itself, you can deploy a Raff Windows VPS first, point your hostname to its public IP, and then continue with the IIS and SSL steps below.
Step 1 - Confirm IIS is installed and running
Open PowerShell as Administrator:
Get-WindowsFeature -Name Web-Server Get-Service W3SVC
Expected result:
Web-Server Installed W3SVC Running
If IIS is not installed:
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Then verify again:
Get-Service W3SVC
If you are hosting ASP.NET Core, install the appropriate .NET Hosting Bundle before you finish the application deployment.
Do not start certificate troubleshooting while IIS itself is not serving the site correctly.
Step 2 - Check the IIS hostname binding
The default IIS workflow works best when the website has the real hostname you want to secure.
Check the current bindings:
Import-Module WebAdministration Get-WebBinding | Select-Object protocol, bindingInformation

A blank HTTP binding looks like this:
http *:80:
A hostname-specific binding looks like this:
http *:80:app.example.com
If the site has no hostname binding, add one:
New-WebBinding -Name "Default Web Site" -Protocol http -Port 80 -HostHeader "app.example.com"
Replace the site name and hostname with your own values.
Verify it:
Get-WebBinding -Name "Default Web Site" | Select-Object protocol, bindingInformation
If win-acme reports that no websites with host bindings are configured, this is one of the first things to check.
Advanced/manual ACME workflows can use other source methods, but the simple IIS path is easiest when IIS already contains the hostname you plan to secure.
Step 3 - Point DNS to the Windows VPS
Create or verify the DNS record for the hostname.
| Type | Name | Value |
|---|---|---|
| A | app | Public IP of your Windows VPS |
Verify from the server:
Resolve-DnsName app.example.com

You can also verify from another machine:
nslookup app.example.com
The returned public IP should be the server that will answer the ACME validation request.
Do not continue if DNS still points to an old server, load balancer, proxy, or another machine that is not prepared to serve the validation challenge.
Step 4 - Make HTTP-01 validation reachable
This guide uses HTTP-01, which requires the ACME server to retrieve a challenge over TCP port 80.
Enable the standard IIS firewall rules if needed:
Enable-NetFirewallRule -DisplayName "World Wide Web Services (HTTP Traffic-In)" Enable-NetFirewallRule -DisplayName "World Wide Web Services (HTTPS Traffic-In)"
Confirm them:
Get-NetFirewallRule -DisplayName "World Wide Web Services (*Traffic-In)" | Select-Object DisplayName, Enabled, Direction, Action

Test port 80 from another machine:
Test-NetConnection app.example.com -Port 80
Expected result:
TcpTestSucceeded : True
If it returns False, check:
- Windows Firewall
- any provider-side or network firewall
- DNS
- IIS site state
- reverse proxies or CDN settings in front of the server
Do you always need port 80?
No. HTTP-01 uses port 80. A DNS-01 workflow validates domain ownership through DNS TXT records instead and is required for wildcard certificates. This article focuses on HTTP-01 because it is the simplest path for a normal IIS hostname.



