explaingit

acmesh-official/acme.sh

📈 Trending46,589ShellAudience · ops devopsComplexity · 2/5ActiveLicenseSetup · easy

TLDR

Shell script that automates obtaining and renewing free SSL/TLS certificates for websites without requiring Python or other dependencies.

Mindmap

mindmap
  root((acme.sh))
    What it does
      Obtains SSL certificates
      Renews certificates
      Handles ACME protocol
      Installs to web servers
    Key features
      No dependencies
      Works on Unix variants
      No root required
      Wildcard support
    Use cases
      Automate HTTPS setup
      Shared hosting
      Minimal environments
      Certificate renewal
    Tech stack
      POSIX shell
      Cron scheduling
      OpenSSL
    Supported CAs
      Let's Encrypt
      ZeroSSL
      BuyPass

Things people build with this

USE CASE 1

Automate SSL certificate issuance and renewal for web servers without manual intervention.

USE CASE 2

Set up HTTPS on shared hosting or constrained environments where you cannot install Python or Ruby.

USE CASE 3

Obtain wildcard or multi-domain certificates and automatically install them into Nginx or Apache.

USE CASE 4

Schedule certificate renewals via cron to run before expiration without ongoing manual work.

Tech stack

ShellPOSIXOpenSSLCron

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

acme.sh is a shell script that automates the process of obtaining and renewing free SSL/TLS certificates for websites. SSL/TLS certificates are the technology behind the padlock icon in browsers, they encrypt traffic between a website and its visitors and prove the website's identity. Services like Let's Encrypt provide these certificates for free, but the process of obtaining and renewing them involves a standardized protocol called ACME (Automatic Certificate Management Environment) that requires answering domain ownership challenges, handling cryptographic operations, and scheduling renewals before certificates expire. Doing all of this manually every 60-90 days is tedious and error-prone. acme.sh automates the entire lifecycle. The key characteristic that distinguishes this tool from similar ones like Certbot is that it is written entirely in POSIX shell script with no dependencies on Python, Ruby, or any other runtime environment. This makes it extremely portable: it runs on Linux, macOS, FreeBSD, OpenBSD, and many other Unix variants using whatever shell is already present. You do not need root or sudo access to run it, which makes it suitable for shared hosting and constrained environments. It supports all ACME certificate authorities including Let's Encrypt, ZeroSSL, and BuyPass. It handles multiple certificate types including wildcard certificates (which cover all subdomains) and SAN certificates (which cover multiple domain names in one certificate). Once installed, it sets up a cron job that automatically renews certificates before they expire and can install them directly into web servers like Nginx and Apache. You would use acme.sh when running any web server that needs HTTPS and you want certificate issuance and renewal to be fully automated with minimal dependencies and no ongoing manual intervention.

Copy-paste prompts

Prompt 1
How do I use acme.sh to get a free SSL certificate for my domain and set up automatic renewal?
Prompt 2
Show me how to install acme.sh on a shared hosting account and configure it to work with my web server.
Prompt 3
How do I use acme.sh to obtain a wildcard certificate that covers all subdomains of my site?
Prompt 4
What are the steps to integrate acme.sh with Nginx so certificates are automatically renewed and reloaded?
Prompt 5
How do I switch from Certbot to acme.sh and migrate my existing Let's Encrypt certificates?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.