SSL-Zertifikate · 6 min read · Feb 04, 2026

Erste Schritte mit dem acme.sh Let's Encrypt SSL-Client

Acme.sh ist ein einfacher, leistungsstarker und benutzerfreundlicher ACME-Protokoll-Client, der rein in Shell (Unix-Shell) Sprache geschrieben ist und mit bash, dash und sh-Shells kompatibel ist. Es hilft bei der Verwaltung von Installation, Erneuerung und Widerruf von SSL-Zertifikaten. Es unterstützt die ACME-Version 1 und ACME-Version 2 Protokolle sowie ACME v2 Wildcard-Zertifikate. Als ein ACME-Client ohne Abhängigkeiten ist es noch besser. Sie müssen nicht das gesamte Internet herunterladen und installieren, um es zum Laufen zu bringen. Das Tool benötigt keinen Root- oder Sudo-Zugriff, es wird jedoch empfohlen, Root zu verwenden.

Acme.sh unterstützt die folgenden Validierungsmethoden, die Sie verwenden können, um den Domainbesitz zu bestätigen:

  • Webroot-Modus
  • Standalone-Modus
  • Standalone tls-alpn-Modus
  • Apache-Modus
  • Nginx-Modus
  • DNS-Modus
  • DNS-Alias-Modus
  • Stateless-Modus

Was ist Let’s Encrypt

Let’s Encrypt (LE) ist eine Zertifizierungsstelle (CA), die kostenlose und automatisierte SSL/TLS-Zertifikate anbietet, mit dem Ziel, das gesamte Web zu verschlüsseln. Wenn Sie einen Domainnamen besitzen und Shell-Zugriff auf Ihren Server haben, können Sie Let’s Encrypt nutzen, um ein vertrauenswürdiges Zertifikat kostenlos zu erhalten. Let’s Encrypt kann SAN-Zertifikate für bis zu 100 Hostnamen ** und Wildcard-Zertifikate ausstellen. Alle Zertifikate sind für einen Zeitraum von 90 Tagen gültig.

Verwendung von Acme.sh und grundlegende Befehle

In diesem Abschnitt werde ich einige der häufigsten acme.sh-Befehle und -Optionen zeigen.

Installation von Acme.sh

Sie haben einige Optionen, um acme.sh zu installieren.

Installation über das Web mit curl oder wget:

curl https://get.acme.sh | sh  
source ~/.bashrc

oder

wget -O - https://get.acme.sh | sh  
source ~/.bashrc

Installation von GitHub:

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

oder

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Git klonen und installieren:

git clone https://github.com/Neilpang/acme.sh.git  
cd ./acme.sh  
./acme.sh --install  
source ~/.bashrc

Der Installer führt 3 Aktionen aus:

  1. Erstellt und kopiert acme.sh in Ihr Home-Verzeichnis ( $HOME): ~/.acme.sh/. Alle Zertifikate werden ebenfalls in diesem Ordner abgelegt.
  2. Erstellt ein Alias für: acme.sh=~/.acme.sh/acme.sh.
  3. Erstellt einen täglichen Cron-Job, um die Zertifikate zu überprüfen und bei Bedarf zu erneuern.

Erweiterte Installation:

git clone https://github.com/Neilpang/acme.sh.git  
cd acme.sh  
./acme.sh --install \  
          --home ~/myacme \  
          --config-home ~/myacme/data \  
          --cert-home ~/mycerts \  
          --accountemail "[email protected]" \  
          --accountkey ~/myaccount.key \  
          --accountconf ~/myaccount.conf \  
          --useragent "das ist mein Client."

Sie müssen nicht alle Optionen festlegen, sondern nur die, die Ihnen wichtig sind.

Optionen erklärt:

  • --home ist ein benutzerdefiniertes Verzeichnis, in dem acme.sh installiert wird. Standardmäßig wird es in ~/.acme.sh installiert.
  • --config-home ist ein beschreibbarer Ordner, acme.sh wird dort alle Dateien (einschließlich Zertifikate/Schlüssel, Konfigurationen) schreiben. Standardmäßig befindet es sich in --home.
  • --cert-home ist ein benutzerdefiniertes Verzeichnis, um die von Ihnen ausgestellten Zertifikate zu speichern. Standardmäßig wird es in --config-home gespeichert.
  • --accountemail ist die E-Mail, die zur Registrierung des Kontos bei Let’s Encrypt verwendet wird, hier erhalten Sie die Erneuerungsbenachrichtigung. Standardmäßig ist es leer.
  • --accountkey ist die Datei, die Ihren privaten Schlüssel speichert. Standardmäßig wird es in --config-home gespeichert.
  • --useragent ist der Wert des User-Agent-Headers, der an Let’s Encrypt gesendet wird.

Nach Abschluss der Installation können Sie dies überprüfen, indem Sie die acme.sh-Version überprüfen:

acme.sh --version  
# v2.8.1

Das Programm hat viele Befehle und Parameter, die verwendet werden können. Um Hilfe zu erhalten, können Sie Folgendes ausführen:

acme.sh --help

Ein SSL-Zertifikat ausstellen

Wenn Sie bereits einen Webserver betreiben, sollten Sie den Webroot-Modus verwenden. Sie benötigen Schreibzugriff auf den Webroot-Ordner. Hier sind einige Beispielbefehle, die verwendet werden können, um ein Zertifikat über den Webroot-Modus zu erhalten:

Einzelne Domain + Webroot-Modus:

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

Mehrere Domains im selben Zertifikat + Webroot-Modus:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com

Einzelne Domain ECC/ECDSA-Zertifikat + Webroot-Modus:

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

Mehrere Domains im selben ECC/ECDSA-Zertifikat + Webroot-Modus:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256

Gültige Werte für --keylength sind: 2048 (Standard), 3072, 4096, 8192 oder ec-256, ec-384.

Wenn Sie keinen Webserver haben, vielleicht sind Sie auf einem SMTP- oder FTP-Server, der Port 80 ist frei, dann können Sie den Standalone-Modus verwenden. Wenn Sie diesen Modus verwenden möchten, müssen Sie zuerst die socat-Tools installieren.

Einzelne Domain + Standalone-Modus:

acme.sh --issue -d example.com --standalone  

Mehrere Domains im selben Zertifikat + Standalone-Modus:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone  

Wenn Sie keinen Webserver haben, vielleicht sind Sie auf einem SMTP- oder FTP-Server, der Port 443 ist frei. Sie können den Standalone TLS ALPN-Modus verwenden. Acme.sh hat einen eingebauten Standalone TLS-Webserver, der auf Port 443 lauschen kann, um das Zertifikat auszustellen.

Einzelne Domain + Standalone TLS ALPN-Modus:

acme.sh --issue -d example.com --alpn

Mehrere Domains im selben Zertifikat + Standalone TLS ALPN-Modus:

acme.sh --issue -d example.com -d www.example.com --alpn

Automatische DNS-API-Integration

Wenn Ihr DNS-Anbieter eine API hat, kann acme.sh die API verwenden, um automatisch den DNS TXT-Eintrag für Sie hinzuzufügen. Ihr Zertifikat wird automatisch ausgestellt und erneuert. Es sind keine manuellen Arbeiten erforderlich. Konfigurieren Sie vor der Anforderung der Zertifikate Ihre API-Schlüssel und E-Mail. Derzeit hat acme.sh eine automatische DNS-Integration mit etwa 60 DNS-Anbietern nativ und kann das Lexicon-Tool für diejenigen nutzen, die nicht nativ unterstützt werden.

Einzelne Domain + CloudFlare DNS API-Modus:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"  
export CF_Email="[email protected]"  
acme.sh --issue -d example.com --dns dns_cf  

Wildcard-Zertifikat + CloudFlare DNS API-Modus:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"  
export CF_Email="[email protected]"  
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

Wenn Ihr DNS-Anbieter keinen API-Zugriff unterstützt, können Sie den TXT-Eintrag manuell hinzufügen.

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com  

Sie sollten eine Ausgabe wie die folgende erhalten:

Fügen Sie den folgenden TXT-Eintrag hinzu:
Domain:_acme-challenge.example.com
Txt-Wert:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Fügen Sie den folgenden TXT-Eintrag hinzu:
Domain:_acme-challenge.www.example.com
Txt-Wert:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Bitte fügen Sie diese TXT-Einträge zu den Domains hinzu. Warten auf die DNS-Wirkung.

Führen Sie dann einfach mit dem renew-Argument erneut aus:

acme.sh --renew -d example.com

Beachten Sie, dass dies der manuelle DNS-Modus ist und Sie Ihre Zertifikate nicht automatisch erneuern können. Sie müssen einen neuen TXT-Eintrag zu Ihrer Domain von Hand hinzufügen, wenn es Zeit ist, die Zertifikate zu erneuern. Verwenden Sie also stattdessen den DNS-API-Modus, da er automatisiert werden kann.

Installieren Sie das Let’s Encrypt SSL-Zertifikat

Nachdem die Zertifikate generiert wurden, möchten Sie wahrscheinlich die ausgestellten Zertifikate an den richtigen Ort auf der Festplatte installieren/kopieren. Sie müssen diesen Befehl verwenden, um die Zertifikate in die Zieldateien zu kopieren, verwenden Sie nicht die Zertifikatdateien im ~/.acme.sh/-Ordner, sie sind nur für den internen Gebrauch, die Ordnerstruktur kann sich in Zukunft ändern. Erstellen Sie vor der Installation ein sinnvolles Verzeichnis, um Ihre Zertifikate zu speichern. Das kann /etc/letsencrypt, /etc/nginx/ssl oder /etc/apache2/ssl sein, je nach Ihrer Webserver-Software und Ihren eigenen Vorlieben zur Speicherung von SSL-bezogenen Dingen.

Apache-Beispiel:

acme.sh --install-cert \  
        --domain example.com \   
        --cert-file /path/to/cert/cert.pem \  
        --key-file /path/to/keyfile/key.pem \  
        --fullchain-file /path/to/fullchain/fullchain.pem \  
        --reloadcmd "sudo systemctl reload apache2.service"

Nginx-Beispiel:

acme.sh --install-cert \  
        --domain example.com \   
        --cert-file /path/to/cert/cert.pem \  
        --key-file /path/to/keyfile/key.pem \  
        --fullchain-file /path/to/fullchain/fullchain.pem \  
        --reloadcmd "sudo systemctl reload nginx.service"

Die Parameter werden in der .acme.sh-Konfigurationsdatei gespeichert, daher müssen Sie es für Ihr System richtig einstellen, da diese Datei gelesen wird, wenn der Cron-Job die Erneuerung ausführt. “reloadcmd” hängt von Ihrem Betriebssystem und Init-System ab.

Erneuern Sie die Let’s Encrypt SSL-Zertifikate

Sie müssen die Zertifikate nicht manuell erneuern. Alle Zertifikate werden automatisch alle 60 Tage erneuert.

Sie können jedoch auch eine Zertifikatserneuerung erzwingen:

acme.sh --renew -d example.com --force

oder für ECC-Zertifikate:

acme.sh --renew -d example.com --force --ecc

So aktualisieren Sie acme.sh

Sie können acme.sh mit dem neuesten Code aktualisieren:

acme.sh --upgrade

Sie können auch die automatische Aktualisierung aktivieren:

acme.sh --upgrade --auto-upgrade

Dann wird acme.sh automatisch auf dem neuesten Stand gehalten.

Das war’s. Wenn Sie bei irgendetwas stecken bleiben, besuchen Sie die acme.sh-Wiki-Seite unter https://github.com/Neilpang/acme.sh/wiki.

Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.