Skip to main content
Certificate issuance

Certbot vs. acme.sh — Choosing an ACME Client

Compare Certbot and acme.sh by features, usability, deployment requirements, and use case.

Certbot and acme.sh are widely used ACME clients for issuing and managing certificates from CAs such as Let's Encrypt. This comparison helps you choose based on your environment and requirements.

1. Tool overview​

1. Certbot​

Developer: Electronic Frontier Foundation (EFF)

Features:

  • An established ACME client
  • Automatic configuration plugins for common web servers
  • A straightforward command-line interface
  • Extensive documentation and community support

2. acme.sh​

Developer: Neilpang and the open-source community

Features:

  • Written in shell script
  • Lightweight, using standard shell utilities
  • Integrations with many DNS providers
  • Flexible configuration and deployment options

Feature comparison​

1. Core features​

FeatureCertbotacme.sh
Certificate issuance✅✅
Automatic renewal✅✅
Automated deployment✅✅
DNS validation✅✅
HTTP validation✅✅
Wildcard certificates✅✅
Multi-domain certificates✅✅

2. Web-server support​

ServerCertbotacme.sh
NGINX✅ Configuration plugin⚠️ Manual configuration
Apache✅ Configuration plugin⚠️ Manual configuration
IIS⚠️ Environment-dependent workflow⚠️ Environment-dependent workflow
Other servers⚠️ Plugin/workflow-dependent✅ Flexible deployment hooks

3. DNS-provider integrations​

DNS providerCertbotacme.sh
Cloudflare✅✅
Alibaba Cloud⚠️ Plugin required✅
Tencent Cloud⚠️ Plugin required✅
AWS Route 53✅✅
GoDaddy⚠️ Plugin required✅
Others⚠️ Plugin-dependent✅ Extensive provider support

3. Usability​

1. Installation​

Certbot:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install certbot

# CentOS/RHEL
sudo yum install certbot

acme.sh:

# Install with the setup script.
curl https://get.acme.sh | sh

2. Certificate issuance​

Certbot with HTTP validation:

sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com

acme.sh with HTTP validation:

~/.acme.sh/acme.sh --issue \
-d example.com \
--webroot /var/www/html

3. Automatic server configuration​

Certbot:

# Configure NGINX automatically.
sudo certbot --nginx -d example.com

# Configure Apache automatically.
sudo certbot --apache -d example.com

acme.sh:

  • Does not provide the same automatic server-configuration workflow
  • Configure the web server manually

Use cases​

1. When to use Certbot​

Suitable for:

  • ✅ NGINX or Apache deployments
  • ✅ Automatic web-server configuration
  • ✅ Users new to ACME tools
  • ✅ Standard server setups

Advantages:

  • Automatic web-server configuration
  • Established support and documentation
  • Community support

2. When to use acme.sh​

Suitable for:

  • ✅ DNS validation workflows
  • ✅ Nonstandard web-server setups
  • ✅ Flexible configuration requirements
  • ✅ Advanced users

Advantages:

  • Integrations with more than 100 DNS providers in the original comparison
  • Shell-based implementation using standard utilities
  • Flexible configuration
  • Extensive features

5. Detailed comparison​

1. Installation and dependencies​

Certbot:

  • Requires a Python environment
  • Can be installed through a package manager
  • Has more runtime dependencies

acme.sh:

  • Written in shell script
  • Uses standard shell and cryptographic utilities
  • Straightforward installation

2. Renewal automation​

Certbot:

  • Packages commonly install a systemd timer
  • Renews before expiration according to the client and CA renewal policy
  • Server configuration commonly requires root privileges

acme.sh:

  • Installs a cron job
  • Renews before expiration according to the client and CA renewal policy
  • Can run without root after setup, subject to file and service permissions

3. Deployment​

Certbot:

  • Can install certificates for supported web servers
  • Supports reload hooks
  • Simple configuration

acme.sh:

  • Configure installation paths or deployment scripts
  • Supports custom deployment commands
  • Flexible configuration

4. DNS validation​

Certbot:

  • Install a DNS plugin
  • Supports major DNS providers through plugins
  • Requires plugin-specific configuration

acme.sh:

  • Includes a broad collection of DNS API integrations
  • Simple configuration
  • Supports many DNS providers

6. Examples​

1. Certbot examples​

Issue with HTTP validation:

sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com \
-d www.example.com

Issue with DNS validation:

sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d example.com \
-d *.example.com

Configure NGINX automatically:

sudo certbot --nginx \
-d example.com \
-d www.example.com

2. acme.sh examples​

Issue with HTTP validation:

~/.acme.sh/acme.sh --issue \
-d example.com \
-d www.example.com \
--webroot /var/www/html

Issue with DNS validation:

export CF_Email="your-email@example.com"
export CF_Key="your-api-key"

~/.acme.sh/acme.sh --issue \
-d example.com \
-d *.example.com \
--dns dns_cf

Install a certificate:

~/.acme.sh/acme.sh --install-cert \
-d example.com \
--key-file /etc/nginx/ssl/key.pem \
--fullchain-file /etc/nginx/ssl/fullchain.pem \
--reloadcmd "systemctl reload nginx"

Choosing an option​

1. Choose Certbot when you​

Suitable for:

  • Use NGINX or Apache
  • Want automatic server configuration
  • Are new to ACME tools
  • Have a standard deployment

2. Choose acme.sh when you​

Suitable for:

  • Need DNS validation
  • Use a nonstandard web-server setup
  • Need a particular DNS-provider integration
  • Need flexible configuration
  • Are comfortable with advanced configuration

3. Choose CertOne when you​

Suitable for:

  • Prefer not to use command-line tools
  • Want a management dashboard
  • Need automatic deployment to multiple nodes
  • Need certificate monitoring
  • Need centralized management of many certificates

Advantages:

  • A web-based management interface
  • Automatic renewal and deployment
  • Certificate monitoring
  • Multiple deployment methods

Best practices​

1. Tool selection​

  • ✅ Standard server configuration: Certbot
  • ✅ Broad DNS integrations: acme.sh
  • ✅ Custom environments: acme.sh
  • ✅ Dashboard-based management: CertOne

2. Certificate management​

  • ✅ Enable automatic renewal
  • ✅ Set certificate expiration reminders
  • ✅ Check certificate status regularly
  • ✅ Back up certificates and private keys

3. Security configuration​

  • ✅ Use secure TLS protocols
  • ✅ Configure security response headers
  • ✅ Enable HSTS
  • ✅ Keep the tools updated

Conclusion​

Certbot and acme.sh both provide capable ACME workflows. Choose according to your server environment, automation needs, and familiarity with the tools.

Key points:

  • ✅ Certbot: standard deployments with server-configuration plugins
  • ✅ acme.sh: flexible configuration and broad DNS support
  • ✅ CertOne: a management interface with automated operations

If you prefer a web interface, CertOne combines certificate management, renewal, deployment, and monitoring in one dashboard.