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

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

Acme.sh unterstützt die folgenden Validierungsmethoden, die Sie zur Bestätigung des Domänenbesitzes verwenden können:

  • Webroot-Modus
  • Standalone-Modus
  • Eigenständiger tls-alpn-Modus
  • Apache-Modus
  • Nginx-Modus
  • DNS-Modus
  • DNS-Alias-Modus
  • Zustandsloser Modus

Was ist Let’s Encrypt

Let’s Encrypt (LE) ist eine Zertifizierungsstelle (CA) und ein Projekt, das 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 verwenden, um kostenlos ein vertrauenswürdiges Zertifikat zu erhalten. Let’s Encrypt kann SAN-Zertifikate für bis zu 100 Hostnamen und Wildcard-Zertifikate ausstellen. Alle Zertifikate sind 90 Tage lang gültig.

Verwendung von Acme.sh und grundlegende Befehle

In diesem Abschnitt zeige ich einige der gebräuchlichsten acme.sh-Befehle und -Optionen.

Acme.sh-Installation

Sie haben einige Möglichkeiten, acme.sh zu installieren.

Installieren Sie vom Web aus mit curl oder :

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

oder

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

Von GitHub aus installieren:

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

Klonen und installieren:

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

Das Installationsprogramm führt 3 Aktionen aus:

  1. Erstellen und kopieren Sie inacme.shIhr Heimatverzeichnis ( ): . Alle Zertifikate werden ebenfalls in diesem Ordner abgelegt.
  2. Alias erstellen für: .
  3. Erstellen Sie täglich einen Cron-Job, um die Zertifikate zu prüfen und gegebenenfalls 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 "hi@acme.sh" \
          --accountkey ~/myaccount.key \
          --accountconf ~/myaccount.conf \
          --useragent "this is my client."

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

Optionen erklärt:

  • --homeist ein benutzerdefiniertes Verzeichnis zur Installation. Standardmäßig wird es installiert in~/.acme.sh.
  • --config-homeein beschreibbarer Ordner ist, schreibt acme.sh alle Dateien (einschließlich Zertifikat/Schlüssel, Konfigurationen) dorthin. Standardmäßig ist es in--home.
  • --cert-homeist ein benutzerdefiniertes Verzeichnis zum Speichern der von Ihnen ausgestellten Zertifikate. Standardmäßig wird es in .
  • --accountemaildie E-Mail ist, die zur Registrierung des Kontos bei Let’s Encrypt verwendet wird, erhalten Sie hier eine E-Mail mit der Benachrichtigung über die Verlängerung. Die Voreinstellung ist leer.
  • --accountkeyist die Datei, in der Ihr privater Schlüssel für Ihr Konto gespeichert wird. Standardmäßig wird es in .
  • --useragentist der User-Agent-Header-Wert, der zum Senden an Let’s Encrypt verwendet wird.

Nachdem die Installation abgeschlossen ist, können Sie sie überprüfen, indem Sieacme.shVersion:

acme.sh --version
# v2.8.1

Das Programm verfügt über eine Vielzahl von Befehlen und Parametern, die verwendet werden können. Um Hilfe zu bekommen, können Sie laufen:

acme.sh --help

Ein SSL-Zertifikat ausstellen

Wenn Sie bereits einen Webserver laufen haben, 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 Domäne + Webroot-Modus:

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

Mehrere Domänen im gleichen cert + Webroot-Modus:

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

Einzelne Domäne ECC/ECDSA-Zertifikat + Webroot-Modus:

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

Mehrere Domains im gleichen ECC/ECDSA cert + 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 --keylengthsind: 2048 (Voreinstellung), 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 Domäne + Standalone-Modus:

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

Mehrere Domains in derselben Akte+ Standalone-Modus:

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

Wenn Sie keinen Webserver haben, befinden Sie sich vielleicht auf einem SMTP- oder FTP-Server, dem 443Der Hafen ist frei. Sie können den eigenständigen TLS-ALPN-Modus verwenden. Acme.sh hat einen eingebauten, eigenständigen TLS-Webserver, der auf Port 443 lauschen kann, um das Zertifikat auszustellen.

Einzelne Domäne + Standalone-TLS-ALPN-Modus:

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

Mehrere Domänen 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-Provider über eine API verfügt, kann acme.sh die API verwenden, um den DNS-TXT-Eintrag automatisch für Sie hinzuzufügen. Ihr Zertifikat wird automatisch ausgestellt und verlängert. Bevor Sie die Zertifikate anfordern, konfigurieren Sie Ihre API-Schlüssel und E-Mail. Derzeit verfügt acme.sh über eine automatische DNS-Integration mit etwa 60 nativen DNS-Anbietern und kann das Lexikon-Tool für diejenigen verwenden, die nicht nativ unterstützt werden.

Einzelne Domäne + CloudFlare DNS-API-Modus:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
acme.sh --issue -d example.com --dns dns_cf

Platzhalter-Zertifikat + CloudFlare DNS-API-Modus:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

Wenn Ihr DNS-Provider 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 unten erhalten:

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Please add those txt records to the domains. Waiting for the dns to take effect.

Dann wiederholen Sie einfach mitrenewArgument:

acme.sh --renew -d example.com

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

Installieren Sie Let’s encrypt SSL cert

Nachdem das/die Zertifikat(e) generiert wurden, möchten Sie wahrscheinlich das/die ausgestellte(n) Zertifikat(e) 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 Zertifikatsdateien im Ordner, sie sind nur für den~/.acme.sh/internen Gebrauch bestimmt, die Ordnerstruktur kann sich in der Zukunft ändern. Erstellen Sie vor der Installation ein sinnvolles Verzeichnis zur Speicherung Ihrer Zertifikate. Das kann sein/etc/letsencrypt, /etc/nginx/ssl oder zum/etc/apache2/ssl Beispiel, abhängig von Ihrer Webserver-Software und Ihren eigenen Präferenzen, SSL-bezogene Sachen zu speichern.

Beispiel Apache:

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"

Beispiel Nginx:

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 sind in der Konfigurationsdatei .acme.sh gespeichert, daher müssen Sie sie für Ihr System richtig einstellen, da diese Datei bei der Erneuerung des Cron-Jobs gelesen wird. „reloadcmd“ ist abhängig von Ihrem Betriebssystem und Ihrem Init-System.

Erneuern Sie die SSL-Zertifikate von Let’s Encrypt

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

Sie können jedoch auch die Erneuerung einer Bescheinigung erzwingen:

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

oder, für die ECC-Zertifizierung:

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

Wie Sie acme.sh aktualisieren können

Mit können Sie acme.sh auf den neuesten Code aktualisieren:

acme.sh --upgrade

Sie können auch ein automatisches Upgrade aktivieren:

acme.sh --upgrade --auto-upgrade

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

Das war’s. Wenn Sie an etwas hängen bleiben, besuchen Sie die Wiki-Seite acme.sh unter https://github.com/Neilpang/acme.sh/wiki.

Links

Das könnte dich auch interessieren …