Acme.sh/Anwendung

Aus Foxwiki

Ein Zertifikat ausstellen

Einzelne Domäne

acme.sh --issue -d example.com -w /home/wwwroot/example.com

oder:

acme.sh --issue -d example.com -w /home/username/public_html

oder:

acme.sh --issue -d example.com -w /var/www/html

Mehrere Domänen in einem Zertifikat

acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com

Der Parameter /home/wwwroot/example.com oder /home/username/public_html oder /var/www/html ist der Web-Stammordner, in dem Sie die Dateien Ihrer Website hosten. Sie MÜSSEN Schreibzugriff auf diesen Ordner haben.

Das zweite Argument "example.com" ist die Hauptdomain, für die Sie das Zertifikat ausstellen möchten. Sie müssen dort mindestens eine Domain haben.

Sie müssen alle Domänen auf das gleiche Webroot-Verzeichnis verweisen und binden: /home/wwwroot/example.com.

Die Zertifikate werden in ~/.acme.sh/example.com/ abgelegt.

Die Zertifikate werden automatisch alle 60 Tage erneuert.

Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert

Zertifikat installieren

Installieren Sie das Zertifikat auf Apache/Nginx usw.

Nachdem das Zertifikat generiert wurde, möchten Sie es wahrscheinlich auf Ihren Apache/Nginx- oder anderen Servern installieren/kopieren. Sie MÜSSEN diesen Befehl verwenden, um die Zertifikate in die Zieldateien zu kopieren, verwenden Sie NICHT die Zertifikatsdateien im Ordner ~/.acme.sh/, sie sind nur für den internen Gebrauch, die Ordnerstruktur kann sich in Zukunft ändern.

Beispiel Apache:

acme.sh --install-cert -d example.com \
--cert-file      /path/to/certfile/in/apache/cert.pem  \
--key-file       /path/to/keyfile/in/apache/key.pem  \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd     "service apache2 force-reload"

Nginx Beispiel:

acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"

Nur die Domäne ist erforderlich, alle anderen Parameter sind optional.

Die Eigentums- und Berechtigungsinformationen vorhandener Dateien werden beibehalten. Sie können die Dateien im Voraus erstellen, um die Eigentümerschaft und die Berechtigung zu definieren.

Installieren/kopieren Sie das Zertifikat/den Schlüssel in den Apache- oder Nginx-Produktionspfad.

Das Zertifikat wird standardmäßig alle 60 Tage erneuert (was konfigurierbar ist). Sobald das Zertifikat erneuert wurde, wird der Apache/Nginx-Dienst automatisch mit dem folgenden Befehl neu geladen: service apache2 force-reload oder service nginx force-reload.

Seien Sie bitte vorsichtig: Der "reloadcmd" ist sehr wichtig. Das Zertifikat kann automatisch erneuert werden, aber ohne einen korrekten "reloadcmd" wird das Zertifikat möglicherweise nicht auf Ihren Server (wie Nginx oder Apache) übertragen, und Ihre Website kann dann in 60 Tagen kein erneuertes Zertifikat anzeigen.

Standalone-Server

Standalone-Server zum Ausstellen von Zertifikaten verwenden

(Sie müssen root/sudoer sein oder die Erlaubnis haben, auf Port 80 (TCP) zu lauschen)

Port 80 (TCP) MUSS zum Abhören frei sein, sonst werden Sie aufgefordert, ihn freizugeben und es erneut zu versuchen.

acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
Weitere Beispiele
  1. https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert

Eigenständigen SSL-Server zum Ausstellen von Zertifikaten verwenden

(Sie müssen root/sudoer sein oder die Erlaubnis haben, auf Port 443 (TCP) zu lauschen)

Port 443 (TCP) MUSS zum Abhören frei sein, sonst werden Sie aufgefordert, ihn freizugeben und es erneut zu versuchen.

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

Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert

Apache-Modus verwenden

(Sie müssen root/sudoer sein, da dies für die Interaktion mit dem Apache-Server erforderlich ist)

Wenn Sie einen Webserver betreiben, wird empfohlen, den Webroot-Modus zu verwenden.

Insbesondere, wenn Sie einen Apache-Server betreiben, können Sie stattdessen den Apache-Modus verwenden. In diesem Modus werden keine Dateien in Ihren Web-Stammordner geschrieben.

Setzen Sie einfach die Zeichenkette "apache" als zweites Argument, und es wird automatisch die Verwendung des Apache-Plugins erzwungen.

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

Dieser Apache-Modus dient nur dazu, das Zertifikat auszustellen, er wird Ihre Apache-Konfigurationsdateien nicht verändern. Sie müssen Ihre Website-Konfigurationsdateien selbst so konfigurieren, dass das Zertifikat verwendet wird. Wir wollen Ihren Apache-Server nicht durcheinander bringen, keine Sorge.

Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert

Nginx-Modus verwenden

(Sie müssen root/sudoer sein, da dies für die Interaktion mit dem Nginx-Server erforderlich ist)

Wenn Sie einen Webserver betreiben, wird empfohlen, den Webroot-Modus zu verwenden.

Insbesondere, wenn Sie einen nginx-Server betreiben, können Sie stattdessen den nginx-Modus verwenden. In diesem Modus werden keine Dateien in Ihr Web-Root-Verzeichnis geschrieben.

Geben Sie einfach die Zeichenfolge "nginx" als zweites Argument ein.

Der nginx-Server wird automatisch konfiguriert, um die Domäne zu verifizieren und dann die nginx-Konfiguration auf die ursprüngliche Version zurückzusetzen.

Die Konfiguration wird also nicht geändert.

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

Dieser Nginx-Modus dient nur zur Ausstellung des Zertifikats, er ändert nicht Ihre Nginx-Konfigurationsdateien. Sie müssen Ihre Website-Konfigurationsdateien selbst für die Verwendung des Zertifikats konfigurieren. Wir wollen Ihren Nginx-Server nicht durcheinander bringen, keine Sorge.

Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert

Automatische DNS-API-Integration

Wenn Ihr DNS-Anbieter API-Zugriff unterstützt, können wir diese API verwenden, um die Zertifikate automatisch auszustellen.

Sie müssen nichts manuell tun!

Derzeit unterstützt acme.sh die meisten DNS-Anbieter:

https://github.com/acmesh-official/acme.sh/wiki/dnsapi

Verwenden Sie den manuellen DNS-Modus:

Siehe: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode first.

Wenn Ihr DNS-Anbieter keinen API-Zugang unterstützt, können Sie den txt-Eintrag von Hand 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 den Vorgang einfach mit neuen Argumenten:

acme.sh --renew -d example.com

Okay, es ist geschafft.

Achten Sie darauf, dass dies ein manueller DNS-Modus ist, der nicht automatisch erneuert werden kann. Sie müssen einen neuen txt-Eintrag zu Ihrer Domain hinzufügen, wenn Sie Ihr Zertifikat erneuern.

Bitte verwenden Sie stattdessen den dns api-Modus.

ECC-Zertifikate ausstellen

Setzen Sie einfach den Parameter keylength mit einem Präfix ec-.

Zum Beispiel:

ECC-Zertifikat für eine Domäne

acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256

SAN-Multi-Domain-ECC-Zertifikat

acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256

Bitte beachten Sie den obigen Parameter keylength.

Gültige Werte sind:

  1. ec-256 (prime256v1, "ECDSA P-256", dies ist der Standardschlüsseltyp)
  2. ec-384 (secp384r1, "ECDSA P-384")
  3. ec-521 (secp521r1, "ECDSA P-521", das von Let's Encrypt noch nicht unterstützt wird).
  4. 2048 (RSA2048)
  5. 3072 (RSA3072)
  6. 4096 (RSA4096)

Wildcard-Zertifikate ausstellen

Es ist ganz einfach: Geben Sie als Parameter -d einen Platzhalter für eine Domäne an.

acme.sh  --issue -d example.com  -d '*.example.com'  --dns dns_cf

Wie man die Zertifikate erneuert

Nein, Sie brauchen die Zertifikate nicht manuell zu erneuern. Alle Zertifikate werden automatisch alle 60 Tage erneuert.

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

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

oder, für ECC cert:

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

Wie man die Zertifikatserneuerung stoppt

Um die Erneuerung eines Zertifikats zu stoppen, können Sie folgendes ausführen, um das Zertifikat aus der Erneuerungsliste zu entfernen:

acme.sh --remove -d example.com [--ecc]

Die Zertifikats-/Schlüsseldatei wird nicht von der Festplatte entfernt.

Sie können das entsprechende Verzeichnis (z.B. ~/.acme.sh/example.com) selbst entfernen.

Wie man acme.sh aktualisiert

acme.sh wird ständig weiterentwickelt, es wird daher dringend empfohlen, den neuesten Code zu verwenden.

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.

Deaktivieren Sie die automatische Aktualisierung:

acme.sh --upgrade --auto-upgrade 0

Ausstellen eines Zertifikats aus einer vorhandenen CSR

https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR

Benachrichtigungen in Cronjob senden

https://github.com/acmesh-official/acme.sh/wiki/notify