Hervorragende Software und praktische Tutorials
Verwenden Sie das Skript acme.sh, um ein kostenloses TSL/SSL-Domänennamenzertifikat auf einem Linux-Server zu beantragen
acme.sh Kostenlos bewerbenSSL-Zertifikat, automatische Erneuerungskonfiguration acme.sh-Skript,LinuxSehr nützlichDomänennamen-ZertifikatAnwendungsskript, einfache Installation, SupportDNSMethodenanwendung und HTTP-Methodenanwendung,Lass uns verschlüsselnDie Beantragung eines Domänennamenzertifikats ist einfach, automatisiert und kostenlos. acme.sh implementiert das ACME-Protokoll und kann kostenlose Zertifikate von Let’s Encrypt generieren.
Einführung in Let’s Encrypt und Acme.sh
Was ist Let’s Encrypt
Let’s Encrypt ist eine digitale Zertifizierungsstelle, die im dritten Quartal 2015 ins Leben gerufen wurde. Ihr Ziel ist es, den komplexen Prozess der manuellen Erstellung und Installation von Zertifikaten durch automatisierte Prozesse zu ersetzen und die Nutzung des World Wide Web zu fördern.ServerVerschlüsselte Verbindungen gibt es überall und bieten kostenloseSSL/TLSZertifikat.
Let's Encrypt wird von der Internet Security Research Group (ISRG) bereitgestellt. Zu den Hauptsponsoren zählen die Electronic Frontier Foundation, die Mozilla Foundation, Akamai und Cisco. Am 9. April 2015 gaben die ISRG und die Linux Foundation ihre Partnerschaft bekannt.
Das zur Implementierung der neuen digitalen Zertifizierungsstelle verwendete Protokoll heißt Automatic Certificate Management Environment (ACME).GitHub上有这一规范的草案,且提案的一个版本已作为一个Internet草案发布。
Der Prozess zur Beantragung eines Domänennamenzertifikats bei Let’s Encrypt ist einfach, automatisiert und kostenlos.
Was ist acme.sh
Einfach ausgedrückt acme.sh Das ACME-Protokoll ist implementiert und kostenlose Zertifikate können von Let’s Encrypt generiert werden.
acme.sh Es verfügt über die folgenden Funktionen:
- Ein ACME-Protokollclient, der ausschließlich in der Sprache Shell (Unix-Shell) geschrieben ist.
- Eine vollständige ACME-Protokollimplementierung.
- Unterstützung von ECDSA-Zertifikaten
- Unterstützung für SAN- und Wildcard-Zertifikate
- Einfach, leistungsstark und sehr benutzerfreundlich. Sie benötigen nur 3 Minuten, um es zu erlernen.
- Kompatibel mit Bash, Dash und Sh.
- Rein in Shell geschrieben, nicht abhängig von Python.
- Automatisieren Sie die Ausstellung, Erneuerung und Installation von Zertifikaten mit nur einem Skript.
- Keine Zugriffsrechte erforderlich. root/sudoer
- Docker-fähig
- IPv6-fähig
- Bei Erneuerung oder Fehler etc. cron Zuweisungsbenachrichtigungen.
Homepage des Github-Projekts:https://github.com/acmesh-official/acme.sh
So installieren Sie acme.sh
Ein reines Unix-Shell-Skript, das das ACME-Client-Protokoll implementiert.
Installieren Sie das Skript acme.sh
Die Installation ist sehr einfach, ein Befehl:
mein@beispiel.comErsetzen Sie es durch Ihre E-Mail-Adresse.
curl https://get.acme.sh | sh -s email=my@example.com
Laden Sie das Skript auf den Server herunter und installieren Sie es:
wget -O - https://get.acme.sh | sh -s email=my@example.com
Alternativ können Sie zur Installation von Git dieses Projekt klonen und die Installation starten:
git clone https://github.com/acmesh-official/acme.sh.git cd ./acme.sh ./acme.sh --install -m my@example.com
Das Installationsprogramm führt drei Aktionen aus:
- Erstellen und kopieren Sie in Ihr Home-Verzeichnis (): acme.sh$HOME~/.acme.sh/. Alle Zertifikate werden auch in diesem Ordner abgelegt.
- Erstellen Sie einen Alias für Folgendes: acme.sh=~/.acme.sh/acme.sh
- Erstellen Sie einen täglichen Cron-Job, um die Zertifikate nach Bedarf zu überprüfen und zu erneuern.
Konfigurieren Sie das Skript acme.sh
Sowohl normale Benutzer als auch Root-Benutzer können acme.sh installieren und verwenden.
Der Installationsvorgang läuft in den folgenden Schritten ab:
Installieren Sie acme.sh in Ihrem Home-Verzeichnis: ~/.acme.sh/ und erstellen Sie zu Ihrer Bequemlichkeit einen Bash-Alias:
alias acme.sh=~/.acme.sh/acme.sh echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profile
Während der Installation wird automatisch ein Cronjob für Sie angelegt, der täglich um 0:00 Uhr alle Zertifikate automatisch prüft. Sollten diese bald ablaufen und erneuert werden müssen, werden die Zertifikate automatisch erneuert.
00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs
Weitere erweiterte Installationsoptionen finden Sie unter: https://github.com/Neilpang/acme.sh/wiki/How-to-install
Der Installationsprozess dieses Skripts beeinträchtigt keine vorhandenen Systemfunktionen und Dateien. Alle Änderungen beschränken sich auf das Installationsverzeichnis: ~/.acme.sh/
Beantragen Sie ein Zertifikat mit acme.sh
acme.sh implementiert alle vom Acme-Protokoll unterstützten Authentifizierungsprotokolle. Es gibt grundsätzlich zwei Möglichkeiten der Authentifizierung: HTTP- und DNS-Authentifizierung.
HTTP-Methode
Bei der HTTP-Methode müssen Sie eine Datei im Stammverzeichnis Ihrer Website platzieren, um Ihren Domänennamenbesitz zu bestätigen und die Verifizierung abzuschließen. Anschließend können Sie ein Zertifikat generieren.
Nehmen wir als Beispiel den Domänennamen boxpu.com:
acme.sh --issue -d boxpu.com -d *.boxpu.com --webroot /www/wwwroot/boxpu.com/
Sie müssen lediglich den Domänennamen und das Stammverzeichnis der Website angeben, auf der sich der Domänenname befindet. acme.sh generiert automatisch eine Verifizierungsdatei, legt sie im Stammverzeichnis der Website ab und führt die Verifizierung anschließend automatisch durch. Anschließend wird die Verifizierungsdatei automatisch gelöscht, ohne dass es zu Nebenwirkungen kommt.
Wenn Sie ApacheServer, acme.sh kann die Überprüfung auch intelligent automatisch aus der Apache-Konfiguration durchführen, Sie müssen das Stammverzeichnis der Website nicht angeben:
acme.sh --issue -d boxpu.com --boxpu.com
Wenn Sie nginxServer oder Anti-Generation, acme.sh Sie können die Überprüfung auch automatisch und intelligent über die Nginx-Konfiguration durchführen lassen, ohne das Stammverzeichnis der Website angeben zu müssen:
acme.sh --issue -d boxpu.com --nginx
Hinweis: Unabhängig vom Apache- oder Nginx-Modus wird acme.sh nach Abschluss der Überprüfung in den vorherigen Zustand zurückversetzt und Ihre Konfiguration nicht ohne Erlaubnis geändert. Der Vorteil ist, dass Sie sich keine Sorgen über eine Beschädigung der Konfiguration machen müssen.
Diese Konfiguration hat einen Nachteil: Sie müssen die SSL-Konfiguration selbst vornehmen. Andernfalls können Sie nur das Zertifikat erfolgreich generieren, Ihre Website kann jedoch weiterhin nicht auf https zugreifen. Aus Sicherheitsgründen sollten Sie die Konfiguration jedoch manuell ändern.
Wenn Sie noch keinen Webdienst ausgeführt haben und Port 80 frei ist, kann acme.sh auch vorgeben, ein Webserver zu sein und vorübergehend auf Port 80 lauschen, um die Überprüfung abzuschließen:
acme.sh --issue -d boxpu.com --standalone
Informationen zur erweiterten Verwendung finden Sie unter: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
DNS-Methode
Der Vorteil dieser Methode besteht darin, dass Sie weder einen Server noch eine öffentliche IP-Adresse benötigen. Sie brauchen lediglich DNS-Auflösungsdatensätze, um die Überprüfung abzuschließen.
Der Nachteil dieser Methode besteht darin, dass acme.sh das Zertifikat mit dieser Methode nicht automatisch erneuern kann, wenn die Automatic DNS API nicht gleichzeitig konfiguriert ist. Sie müssen dann jedes Mal den Domänennamenbesitz manuell neu analysieren und überprüfen.
Beantragen Sie ein Zertifikat über DNS
cd /root/.acme.sh acme.sh --issue -d *.boxpu.com -d boxpu.com --dns --yes-ich-kenne-DNS-manueller-Modus-genug-mach-bitte
Ändern Sie DNS und ändern Sie den Hostdatensatz auf der NS-Verwaltungsseite.
Generieren eines Zertifikats mithilfe von DNS
Holen Sie sich ein kostenloses Wildcard-Domänennamen-Zertifikat von Let's Encrypt. Führen Sie nach der DNS-Auflösung den folgenden Befehl aus, um das Zertifikat neu zu generieren:
acme.sh --renew -d *.boxpu.com -d boxpu.com --dns --yes-ich-kenne-DNS-manueller-Modus-genug-mach-bitte
Beachten Sie, dass beim zweiten Mal --erneuern
DNS-Methoden-API
Die wahre Stärke der DNS-Methode liegt darin, dass SieDomänennamenauflösungDie vom Anbieter bereitgestellte API fügt automatisch TXT-Einträge hinzu, um die Überprüfung abzuschließen.
acme.sh unterstützt derzeit Cloudflare、dnspod、cloudxns、GoDaddy Und automatische Integration von Dutzenden von Parsern wie OVH.
Am Beispiel von dnspod müssen Sie sich zuerst bei Ihrem dnspod-Konto anmelden und Ihre API-ID und Ihren API-Schlüssel generieren. Beide sind kostenlos.
export DP_Id="xxxxxxxxxxxx" export DP_Key="xxxxxxxxxxxxxx" acme.sh --issue --dns dns_dp -d boxpu.com -d boxpu.com
Das Zertifikat wirdAutomatisch generierenDie hier angegebene API-ID und der API-Schlüssel werden automatisch gespeichert. Sie müssen diese bei zukünftigen Verwendungen der dnspod-API nicht erneut angeben. Generieren Sie sie einfach direkt:
acme.sh --issue -d boxpu.com --dns dns_dp
Ausführlichere API-Nutzung: https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md
Verwendung von TLS/SSL-Zertifikaten
Installation des TLS/SSL-Zertifikats
Nachdem das Zertifikat generiert wurde, müssen Sie es dorthin kopieren, wo Sie es wirklich benötigen.
Beachten Sie, dass die standardmäßig generierten Zertifikate im Installationsverzeichnis ~/.acme.sh/ abgelegt werden. Verwenden Sie die Dateien in diesem Verzeichnis nicht direkt.
Beispiel: Verwenden Sie die folgende Datei nicht direkt in der Nginx/Apache-Konfigurationsdatei.
Die hier aufgeführten Dateien sind nur für den internen Gebrauch bestimmt. Die Verzeichnisstruktur kann sich ändern. Die korrekte Verwendung erfolgt über den Befehl --installcert und die Angabe des Zielspeicherorts. Anschließend werden die Zertifikatsdateien an den entsprechenden Speicherort kopiert. Beispiel:
acme.sh --installcert -d boxpu.com \ --key-file /etc/nginx/ssl/uzbox.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd "systemctl force-reload nginx"
Installieren Sie das SSL-Zertifikat auf dem Nginx-Server
Am Beispiel der Nginx-Standardkonfiguration wird empfohlen, die generierte Zertifikatsdatei fullchain.cer zu verwenden, und die private Schlüsseldatei lautet boxpu.com.key.
Die SSL-Zertifikatskonfiguration von Nginx verwendet fullchain.cer anstelle von .cer, andernfalls meldet der SSL Labs-Test einen Fehler „Chain issues Incomplete“.
Der oben generierte Zertifikatspfad lautet /www/server/panel/vhost/cert/boxpu.com/;
Nginx-Konfigurationsdatei ändern
Server { listen 443; Servername boxpu.com; SSL ein; Stamm-HTML; Index index.html index.htm; SSL-Zertifikat /www/server/panel/vhost/cert/boxpu.com/fullchain.cer; SSL-Zertifikatsschlüssel /www/server/panel/vhost/cert/boxpu.com/clsn.key; SSL-Sitzungstimeout 5 m; SSL-Chiffren ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2; SSL-bevorzugte Server-Chiffren ein; Standort / { Stamm-HTML; Index index.html index.htm; } }
Starten Sie nginx neu und laden Sie die neue Konfiguration
systemctl force-reload nginx
Hinweis: Hier wird systemctl force-reload nginx verwendet, nicht systemctl reload nginx. Da „Reload“ das Zertifikat nicht neu lädt, wird „force-reload“ verwendet.
Zertifikate erneuern
Zertifikatserneuerung
Das aktuelle Zertifikat ist 90 Tage gültig und wird nach 60 Tagen ausgestellt.Geplante AufgabenAutomatische Erneuerung, Sie müssen nichts tun. Alles läuft automatisch ab, Sie müssen sich keine Gedanken über den Ablauf des Zertifikats machen.
acme.sh-Aktualisierungen
Da das Acme-Protokoll und die Letsencrypt-CA derzeit häufig aktualisiert werden, wird auch acme.sh häufig aktualisiert, um die Synchronisierung aufrechtzuerhalten.
Aktualisieren Sie acme.sh auf die neueste Version:
acme.sh --upgrade
Wenn Sie nicht manuell aktualisieren möchten, können Sie die automatische Aktualisierung aktivieren:
acme.sh --upgrade --auto-upgrade
Danach bleibt acme.sh automatisch auf dem neuesten Stand. Sie können die automatischen Updates jederzeit deaktivieren:
acme.sh --upgrade --auto-upgrade 0
Verweise