Ein ACME-Protokoll-Client, der ausschließlich in der Shell-Sprache (Unix-Shell) geschrieben ist.
Vollständige Implementierung des ACME-Protokolls.
Unterstützen Sie ECDSA-Zertifikate
Unterstützt SAN- und Wildcard-Zertifikate
Einfach, leistungsstark und sehr einfach zu bedienen. Sie brauchen nur 3 Minuten, um es zu lernen.
Bash-, Dash- und Sh-kompatibel.
Rein in Shell geschrieben, ohne Abhängigkeiten von Python.
Nur ein Skript zum automatischen Ausstellen, Erneuern und Installieren Ihrer Zertifikate.
Erfordert KEINEN root/sudoer
Zugriff.
Docker bereit
IPv6 bereit
Cron-Job-Benachrichtigungen für Erneuerung, Fehler usw.
Es ist wahrscheinlich das easiest & smartest
Shell-Skript, um die kostenlosen Zertifikate automatisch auszustellen und zu erneuern.
Wiki: https://github.com/acmesh-official/acme.sh/wiki
Für Docker-Fans: acme.sh ? Docker
Twitter: @neilpangxa
FreeBSD.org
ruby-china.org
Proxmox
pfsense
Loadbalancer.org
discourse.org
Centminmod
splynx
opnsense.org
CentOS-Webpanel
lnmp.org
mehr...
NEIN | Status | Plattform |
---|---|---|
1 | Mac OSX | |
2 | Windows (Cygwin mit Curl, OpenSSL und Crontab enthalten) | |
3 | FreeBSD | |
4 | Solaris | |
5 | Ubuntu | |
6 | N / A | pfsense |
7 | OpenBSD | |
8 | NetBSD | |
9 | DragonFlyBSD | |
10 | Omnios | |
11 | Debian | |
12 | CentOS | |
13 | openSUSE | |
14 | Alpine Linux (mit Curl) | |
15 | Archlinux | |
16 | Fedora | |
17 | Kali Linux | |
18 | Oracle Linux | |
19 | Mageia | |
10 | Gentoo Linux | |
11 | ClearLinux | |
22 | ----- | Cloud Linux #111 |
23 | ----- | OpenWRT: Getestet und funktioniert. Siehe Wiki-Seite |
24 | Proxmox: Siehe Proxmox VE Wiki. Version 4.x, 5.0, 5.1, Version 5.2 und höher |
Schauen Sie sich unser Testprojekt an:
https://github.com/acmesh-official/acmetest
ZeroSSL.com CA (Standard)
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
Öffentliche Zertifizierungsstelle von Google.com
Pebble strenger Modus
Jede andere RFC8555-konforme Zertifizierungsstelle
Webroot-Modus
Standalone-Modus
Eigenständiger TLS-Alpen-Modus
Apache-Modus
Nginx-Modus
DNS-Modus
DNS-Alias-Modus
Zustandsloser Modus
Überprüfen Sie dieses Projekt: https://github.com/acmesh-official/get.acme.sh
Curl https://get.acme.sh | sh -s [email protected]
Oder:
wget -O - https://get.acme.sh | sh -s [email protected]
Klonen Sie dieses Projekt und starten Sie die Installation:
Git-Klon https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m [email protected]
Sie don't have to be root
, obwohl it is recommended
.
Erweiterte Installation: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
Das Installationsprogramm führt drei Aktionen aus:
Erstellen und kopieren Sie acme.sh
in Ihr Home-Verzeichnis ( $HOME
): ~/.acme.sh/
. Alle Zertifikate werden ebenfalls in diesem Ordner abgelegt.
Alias erstellen für: acme.sh=~/.acme.sh/acme.sh
.
Erstellen Sie einen täglichen Cronjob, um die Zertifikate bei Bedarf zu überprüfen und zu erneuern.
Beispiel für einen Cron-Eintrag:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
Nach der Installation müssen Sie das aktuelle Terminal schließen und erneut öffnen, damit der Alias wirksam wird.
Ok, Sie sind jetzt bereit, Zertifikate auszustellen.
Hilfemeldung anzeigen:
root@v1:~# acme.sh -h
Beispiel 1: Einzelne Domain.
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
Beispiel 2: Mehrere Domänen im selben 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 Ihre Website-Dateien hosten. Sie MÜSSEN write access
auf diesen Ordner haben.
Das zweite Argument „example.com“ ist die Hauptdomäne, für die Sie das Zertifikat ausstellen möchten. Sie müssen dort mindestens eine Domain haben.
Sie müssen alle Domänen auf dasselbe Webroot-Verzeichnis verweisen und an dieses binden: /home/wwwroot/example.com
.
Die Zertifikate werden in ~/.acme.sh/example.com/
abgelegt.
Die Zertifikate werden alle 60 Tage automatisch erneuert.
Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Nachdem das Zertifikat generiert wurde, möchten Sie es wahrscheinlich auf Ihrem 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 bestimmt, die Ordnerstruktur kann sich in Zukunft ändern.
Apache- Beispiel:
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“
Es ist nur die Domäne erforderlich, alle anderen Parameter sind optional.
Die Eigentums- und Berechtigungsinformationen vorhandener Dateien bleiben erhalten. Sie können die Dateien vorab erstellen, um den Besitz und die Berechtigung zu definieren.
Installieren/kopieren Sie das Zertifikat/den Schlüssel in den Produktions-Apache- oder Nginx-Pfad.
Das Zertifikat wird standardmäßig alle 60 Tage erneuert (was konfigurierbar ist). Sobald das Zertifikat erneuert wurde, wird der Apache/Nginx-Dienst automatisch durch den folgenden Befehl neu geladen: service apache2 force-reload
oder service nginx force-reload
.
Bitte beachten Sie: Der reloadcmd ist sehr wichtig. Das Zertifikat kann automatisch erneuert werden, aber ohne ein korrektes „reloadcmd“ wird das Zertifikat möglicherweise nicht auf Ihren Server (wie Nginx oder Apache) übertragen, sodass Ihre Website das erneuerte Zertifikat innerhalb von 60 Tagen nicht mehr anzeigen kann.
(erfordert, dass Sie root/sudoer sind oder die Berechtigung haben, Port 80 (TCP) abzuhören)
Port 80
(TCP) MUSS zum Abhören frei sein, andernfalls 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: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(erfordert, dass Sie root/sudoer sind oder die Berechtigung haben, Port 443 (TCP) abzuhören)
Port 443
(TCP) MUSS zum Abhören frei sein, andernfalls 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
(Erfordert, dass Sie root/sudoer sind, da es für die Interaktion mit dem Apache-Server erforderlich ist.)
Wenn Sie einen Webserver betreiben, empfiehlt es sich, den Webroot mode
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.
Legen Sie einfach die Zeichenfolge „Apache“ als zweites Argument fest und die Verwendung des Apache-Plugins wird automatisch erzwungen.
acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
Dieser Apache-Modus dient nur der Ausstellung des Zertifikats und ändert nicht Ihre Apache-Konfigurationsdateien. Sie müssen die Konfigurationsdateien Ihrer Website konfigurieren, um das Zertifikat selbst verwenden zu können. Wir wollen uns nicht mit Ihrem Apache-Server anlegen, keine Sorge.
Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(Erfordert, dass Sie root/sudoer sind, da es für die Interaktion mit dem Nginx-Server erforderlich ist.)
Wenn Sie einen Webserver betreiben, empfiehlt es sich, den Webroot mode
zu verwenden.
Insbesondere wenn Sie einen Nginx-Server betreiben, können Sie stattdessen den Nginx-Modus verwenden. In diesem Modus werden keine Dateien in Ihren Web-Stammordner geschrieben.
Legen Sie einfach die Zeichenfolge „nginx“ als zweites Argument fest.
Der Nginx-Server wird automatisch so konfiguriert, dass er die Domäne überprüft und dann die Nginx-Konfiguration auf die Originalversion zurücksetzt.
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 der Ausstellung des Zertifikats und ändert nicht Ihre Nginx-Konfigurationsdateien. Sie müssen die Konfigurationsdateien Ihrer Website konfigurieren, um das Zertifikat selbst verwenden zu können. Wir wollen uns nicht mit Ihrem Nginx-Server anlegen, keine Sorge.
Weitere Beispiele: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Wenn Ihr DNS-Anbieter den API-Zugriff unterstützt, können wir diese API verwenden, um die Zertifikate automatisch auszustellen.
Sie müssen nichts manuell tun!
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
Siehe zuerst: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode.
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:
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:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Bitte fügen Sie diese TXT-Einträge zu den Domains hinzu. Ich warte darauf, dass die DNS wirksam wird.
Führen Sie dann einfach noch einmal das Argument renew
aus:
acme.sh --renew -d example.com
Ok, es ist geschafft.
Seien Sie vorsichtig, dies ist der manuelle DNS-Modus, er kann nicht automatisch erneuert werden. Sie müssen Ihrer Domain eigenhändig einen neuen TXT-Eintrag hinzufügen, wenn Sie Ihr Zertifikat erneuern.
Bitte verwenden Sie stattdessen den DNS-API-Modus.
Legen Sie einfach den keylength
mit dem Präfix ec-
fest.
Zum Beispiel:
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
Bitte schauen Sie sich den keylength
oben an.
Gültige Werte sind:
ec-256 (prime256v1, „ECDSA P-256“, der Standardschlüsseltyp)
ec-384 (secp384r1, „ECDSA P-384“)
ec-521 (secp521r1, „ECDSA P-521“, was von Let's Encrypt noch nicht unterstützt wird.)
2048 (RSA2048)
3072 (RSA3072)
4096 (RSA4096)
Es ist ganz einfach: Geben Sie einfach eine Platzhalterdomäne als Parameter -d
an.
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
Nein, Sie müssen die Zertifikate nicht manuell erneuern. Alle Zertifikate werden alle 60 Tage automatisch erneuert.
Sie können die Erneuerung eines Zertifikats jedoch auch erzwingen:
acme.sh --renew -d example.com --force
oder für ECC-Zertifikate:
acme.sh --renew -d example.com --force --ecc
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.
acme.sh
acme.sh wird ständig weiterentwickelt, daher wird dringend empfohlen, den neuesten Code zu verwenden.
Sie können acme.sh auf den neuesten Code aktualisieren:
acme.sh --upgrade
Sie können auch das automatische Upgrade aktivieren:
acme.sh --upgrade --auto-upgrade
Dann wird acme.sh automatisch auf dem neuesten Stand gehalten.
Automatisches Upgrade deaktivieren:
acme.sh --upgrade --auto-upgrade 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
Sprechen Sie die ACME-Sprache mit der Shell direkt zu „Let's Encrypt“.
TODO:
Acme-tiny: https://github.com/diafygi/acme-tiny
ACME-Protokoll: https://github.com/ietf-wg-acme/acme
Dieses Projekt existiert dank aller Menschen, die dazu beitragen.
Werden Sie ein finanzieller Spender und helfen Sie uns, unsere Gemeinschaft zu erhalten. [Beitragen]
Unterstützen Sie dieses Projekt mit Ihrer Organisation. Hier erscheint Ihr Logo mit einem Link zu Ihrer Website. [Beitragen]
Die Lizenz ist GPLv3
Bitte Star und Fork mich.
Issues und Pull Requests sind willkommen.
Ihre Spende macht acme.sh besser:
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
Spendenliste