GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erste Schritte mit acme.sh Lets Encrypt SSL-Client

Acme.sh ist ein einfacher, leistungsstarker und benutzerfreundlicher ACME-Protokollclient, der ausschließlich in der Shell-Sprache (Unix-Shell) geschrieben 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 Protokolle ACME Version 1 und ACME Version 2 sowie ACME v2 Wildcard-Zertifikate. Ein ACME-Client ohne Abhängigkeiten zu sein, macht es 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, mit denen Sie den Domain-Inhaberschaft bestätigen 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), 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 verwenden, um kostenlos ein vertrauenswürdiges Zertifikat zu erhalten. Let's Encrypt kann SAN-Zertifikate für bis zu 100 Hostnamen ausstellen  und Wildcard-Zertifikate. Alle Zertifikate sind für einen Zeitraum von 90 Tagen 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 mehrere Möglichkeiten, acme.sh zu installieren.

Installieren aus dem Web über curl oder wget :

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

oder

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

Von GitHub 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

Git 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 acme.sh in Ihr Heimatverzeichnis ($HOME ):~/.acme.sh/ . Alle Zertifikate werden ebenfalls in diesem Ordner abgelegt.
  2. Alias ​​erstellen für:acme.sh=~/.acme.sh/acme.sh .
  3. Erstellen Sie 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 "this is my client."

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

Erklärung der Optionen:

  • --home ist ein angepasstes Verzeichnis zum Installieren von acme.sh in. Standardmäßig wird es in ~/.acme.sh. installiert
  • --config-home ein beschreibbarer Ordner ist, wird acme.sh alle Dateien (einschließlich cert/keys, configs) dorthin schreiben. Standardmäßig ist es in --home.
  • --cert-home ist ein angepasstes Verzeichnis zum Speichern der von Ihnen ausgestellten Zertifikate. Standardmäßig wird es in --config-home gespeichert .
  • --accountemail die E-Mail-Adresse ist, die zur Registrierung des Kontos bei Let's Encrypt verwendet wird, erhalten Sie hier eine Verlängerungsbenachrichtigung per E-Mail. Standard ist leer.
  • --accountkey ist die Datei, die den privaten Schlüssel Ihres Kontos speichert. Standardmäßig wird es in --config-home gespeichert .
  • --useragent ist 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 Sie acme.sh prüfen Version:

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

Stellen Sie ein SSL-Zertifikat aus

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

Einzeldomäne + 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

Einzeldomänen-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.

Einzeldomäne + 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, befinden Sie sich vielleicht auf einem SMTP- oder FTP-Server, der 443-Port ist kostenlos. Sie können den eigenständigen TLS-ALPN-Modus verwenden. Acme.sh verfügt über einen integrierten eigenständigen TLS-Webserver, der Port 443 überwachen kann, um das Zertifikat auszustellen.

Einzeldomäne + eigenständiger TLS-ALPN-Modus:

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

Mehrere Domains im selben Zertifikat + eigenständiger TLS-ALPN-Modus:

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

Automatische DNS-API-Integration

Wenn Ihr DNS-Anbieter ü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 erneuert. Es ist keine manuelle Arbeit erforderlich. 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.

Einzeldomäne + 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 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 einfach mit renew erneut ausführen Argument:

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 Ihrer Domain eigenhändig einen neuen TXT-Eintrag hinzufügen, wenn es an der Zeit ist, Zertifikate zu erneuern. Verwenden Sie daher stattdessen den DNS-API-Modus, da er automatisiert werden kann.

Installieren Sie das Let's encrypt SSL-Zertifikat

Nachdem Zertifikate generiert wurden, möchten Sie wahrscheinlich ausgestellte Zertifikate an den richtigen Speicherort auf der Festplatte installieren/kopieren. Sie müssen diesen Befehl verwenden, um die Zertifikate in die Zieldateien zu kopieren. Verwenden Sie nicht die Zertifikatsdateien in ~/.acme.sh/ Ordner, sie sind nur für den internen Gebrauch, die Ordnerstruktur kann sich in Zukunft ändern. Erstellen Sie vor der Installation ein vernünftiges Verzeichnis zum Speichern Ihrer Zertifikate. Das kann /etc/letsencrypt sein , /etc/nginx/ssl  oder /etc/apache2/ssl abhängig von Ihrer Webserver-Software und Ihren eigenen Einstellungen zum Speichern von SSL-bezogenen Inhalten.

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 Konfigurationsdatei .acme.sh gespeichert, Sie müssen sie also für Ihr System richtig machen, da diese Datei gelesen wird, wenn der Cron-Job die Erneuerung ausführt. "reloadcmd" ist abhängig von Ihrem Betriebssystem und Init-System.

Erneuern Sie die SSL-Zertifikate von Let's Encrypt

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

Sie können jedoch auch die Erneuerung eines Zertifikats erzwingen:

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

oder für das ECC-Zertifikat:

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

So aktualisieren Sie acme.sh

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

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 ist es. Wenn Sie bei irgendetwas nicht weiterkommen, besuchen Sie die Wiki-Seite acme.sh unter https://github.com/Neilpang/acme.sh/wiki.

  • https://github.com/Neilpang/acme.sh
  • https://letsencrypt.org/

Linux
  1. Erste Schritte mit Zsh

  2. Erste Schritte mit Lets Encrypt SSL-Zertifikaten auf Ubuntu

  3. So verwalten Sie SSL/TLS-Zertifikate von Lets Encrypt mit certbot

  4. Erste Schritte mit ls

  5. Erste Schritte mit PostgreSQL unter Linux

Erste Schritte mit LibreCAD

Gedanken zu zwischenzeitlich kompatiblem SSL mit Lets Encrypt-Zertifikaten

So installieren Sie WonderCMS mit Nginx und Lets Encrypt SSL unter CentOS 7

Erste Schritte mit GIT unter Linux

Erste Schritte mit dem Linux-Betriebssystem

Erste Schritte mit systemctl