{"copy":"Copy","expand":"Expand","collapse":"Collapse","copy_success":"Copied!","copy_error":"Copying failed!"}

Comparison of ACME Clients and Assistance with Choosing a Client for EAB ACME

What is the ACME Protocol and an ACME Client

ACME (Automated Certificate Management Environment) is a protocol that fully automates the issuance, renewal, and management of SSL/TLS certificates. In practice, it eliminates the need for manual generation of requests (CSR), domain validation, and certificate installation, significantly simplifying the whole process and reducing the risk of errors. ACME communicates directly with the certificate authority and uses standardized challenges (e.g., HTTP-01 or DNS-01) to verify that the applicant actually owns the given domain. Thanks to this, certificates can be obtained within seconds and also regularly renewed automatically before expiration.

An ACME client is a tool or software that implements this protocol on the user side. Its task is to communicate with the ACME server (e.g., certificate authority), generate keys, solve validation challenges, and install issued certificates into the server or infrastructure. Known ACME clients include Certbot, acme.sh, or integrated tools in modern hosting platforms. A correctly configured ACME client enables fully unattended operation – certificates are issued and renewed automatically, which is an ideal solution for scalable environments and secure management of web services.

Overview of ACME Client Features

All ACME clients listed in the table can automatically verify and issue a certificate using ACME, including integration with DigiCert EAB. This is a basic prerequisite for using an ACME client, and if it couldn't do that, there would be no point in listing it in the overview.

Client Basic Information and Complexity Certificate Automation Technical Parameters Summary
Operating System EAB ACME Support Installation Method Server Installation Renewal Scheduling DNS API Support Language Tested Suitable for
Certbot Linux, macOS ✅ Yes System Package (apt / snap) ✅ Full (Apache, Nginx) ✅ Automatic (systemd timer) 50+ (plugins) ⚡ Python YES Recommended, linux web servers (Apache / Nginx)
win-acme Windows Server ✅ Yes Installation Wizard (.exe) ✅ Full (IIS) ✅ Automatic (Task Scheduler) 30+ ⚡ C# (.NET) YES Windows Server / IIS
Certify The Web Windows ✅ Yes Installer (.msi) ✅ Full (IIS, Exchange, SQL, API) ✅ Automatic (custom service) 100+ (including local scripts) C# (.NET) YES Beginners on Windows, has GUI and post-processing
SimpleACME (WACS) Windows Server ✅ YES Zip / Binary .exe ✅ Full (IIS, RDS, Exchange) ✅ Automatic (Task Scheduler) 40+ (incl. Posh-ACME plugins) ⚡ C# (.NET) YES Successor to wim-acme for Windows/IIS
Cert-manager Kubernetes (Linux) ✅ Yes Helm chart / Manifests ✅ Full (Ingress / Gateway API) ✅ Automatic (Controller loop) 60+ (natively + plugins) Go NO Kubernetes and Cloud-native environments
acme.sh Linux, macOS, Unix ✅ Yes Installation script (curl) ⚙️ Partial (deploy hook) ✅ Automatic (cron) 150+ (natively) ⚡ Shell (Bash) YES Recommended, ideal for DNS automation and DevOps
Lego Linux, macOS, Windows ✅ Yes Download binary file ⚙️ Partial (deploy hook) ⚙️ External scheduler needs configuration 180+ (natively) ⚡ Go YES Cloud, Docker, CI/CD
Posh-ACME Windows, Linux (PS Core) ✅ Yes PowerShell Gallery ⚙️ Partial (scripts) ✅ Automatic (Task Scheduler) 100+ PowerShell Windows automation and scripting
dc-acme Linux, Windows ✅ Yes Installation script (curl / PS) ⚙️ Partial (Filesystem / Custom handlers) ✅ Automatic (system service) UltraDNS, Cloudflare, Route53, Azure Java / TOML Enterprise environments (DigiCert MPKI / ONE)
Explanations:
✅ Fully automatic – everything happens without user intervention.
⚙️ Partially automatic – requires manual setup or scripting.
⚡ You can use DNS plugin for CZECHIA.COM/RegZone; either in the project or separately on Github.

How to Choose the Right ACME Client

The choice of an ACME client depends on your goals. You may only want to issue a certificate and work with it manually or using scripts, or you want to set up complete automation of the certificate lifecycle on a web server and not worry about it afterward. These are the criteria important for the selection.

Automation of the entire certificate lifecycle consists of several parts that the ACME client must be able to solve:

  • Communication with CA - for OV and EV certificates, EAB ACME support is required on the client's side. Not every client supports EAB; for example, native ACME implementation in nginx does not support EAB.
  • Automatic Domain Validation - with each certificate issuance, domain validation (DCV) must occur, or the domain must be pre-validated. Without automatic domain validation, certificates will not be issuable in the future.
    • HTTP-01: A validation file is exposed on the server and checked by the CA, using port 80.
    • DNS-01: The validation record is set in the domain's DNS zone. To change the DNS record, a plugin for the DNS provider API is needed (Cloudflare, CZECHIA.COM).
  • Issuing Certificates - DV certificates are issued immediately, for OV and EV, the organization used must be verified, which is solved by pre-validation. The issued certificate is stored locally on disk by the ACME client, where the private key is already located. The certificate can then be further manipulated using scripts (deploy-hook).
  • Installation/Setup of the Certificate on the Server - setting (installing) the certificate to the appropriate service on the web server. This requires manipulation and editing of configuration files and service restart. Installation is typically possible only on Apache, nginx, and IIS web servers.

Not every ACME client meets all requirements. Therefore, we created an overview table to facilitate selection.

What to Do If the ACME Client Does Not Support My Server

It is typical for ACME clients to be able to set the issued certificate on the most common web servers - Apache, nginx, and IIS. Often, that's where their capabilities end. If you need to automate certificates on a server that is not supported by ACME clients, you need to split the automation into the issuance phase and the deployment phase of the certificate.

You can always automate the issuance using acme.sh and DNS; you can thus issue the certificate on any machine without needing to run ACME directly on the server, as HTTP-01 requires. The issued certificate then needs to be transferred to the target server and deployed there, which must be scripted individually according to the specific type of web server.

Consult with Our Support

If this article did not answer all your questions, do not hesitate to contact our SSLmarket support. Live experts are available to you daily.