So erhalten Sie ein dauerhaftes kostenloses SSL-Zertifikat von Let’s Encrypt in Docker

So erhalten Sie ein dauerhaftes kostenloses SSL-Zertifikat von Let’s Encrypt in Docker

1. Ursache

Der offizielle Cerbot ist zu nervig. Es wird nicht empfohlen, acme.sh zu verwenden, das noch schlimmer ist als das Wildwuchsmittel. Hier zeigen wir, wie man Cerbot in Docker ausführt, um ein dauerhaftes kostenloses SSL-Zertifikat von Let's Encrypt zu erhalten.

2. Modellauswahl

Das Cerbot-Zertifikat aktualisiert das Datum nicht automatisch, aber acme.sh verfügt über diese Funktion, die abgelaufene Domänennamen automatisch erkennt und sie jeden Tag um 0:00 Uhr erneuert.

Die Wahl von Docker zum Ausführen von Cerbot dient dazu, die Konfiguration und bedeutungslose Programme auf dem Server zu minimieren und so die Verwaltung zu vereinfachen. Beispielsweise müssen wir Python 2.7, Git und Pip, die von Let’s Encrypt benötigt werden, nicht auf dem Hostcomputer installieren, der Container konfiguriert sich selbst

Originalartikel https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker

3. Ziehen Sie das Bild

$ docker pull neilpang/acme.sh

Führen Sie den Docker-Befehl im DNS-Modus aus

$ docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 -e Ali_Key="xxxxxx" \
 -e Ali_Secret="xxxx" \
 neilpang/acme.sh --issue --dns dns_ali -d domain.cn -d *.domain.cn

Nach erfolgreichem Abschluss wird das Zertifikat im Ordner „out“ gespeichert. Sie können den Pfad auch angeben, indem Sie die erste Zeile „$(pwd)/out“ oben in den Pfad ändern, in dem Sie es speichern möchten.

4. Hinweis

--dns dns_ali

Sie müssen entsprechend dem DNS-Modus Ihres Domänennamens wählen. Dies ist offensichtlich Alibaba. Die ersten beiden Konfigurationen sind Ali_Key und Ali_Secret

Ali_Key, Ali_Secret

Muss vom Alibaba Cloud-Backend bezogen werden

Wenn Sie den DNS-Modus Ihres Domänennamens nicht kennen, finden Sie ihn hier https://github.com/acmesh-official/acme.sh/wiki/dnsapi

Um den DNS-Modus und die zugehörige Konfiguration eines Domänennamens zu erhalten, können Sie sich direkt an den Kundendienst Ihres Domänennamens wenden

Nehmen wir Tencent als Beispiel

$ docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 -e DP_Id="xxxxxx" \
 -e DP_Schlüssel="xxxx" \
 neilpang/acme.sh --issue --dns dns_dp -d domain.cn -d *.domain.cn

Tencent hat DNSPod übernommen, daher ist es dns_dp

Zuerst dachte ich, es wäre TX_Id, TX_Key, dns_tx usw.

Nach einigem Suchen stellte ich fest, dass mein Alibaba-Server ordnungsgemäß funktionierte, mit den Schritten jedoch alles in Ordnung war.

Also bat ich das Unternehmen, das Domänennamenkonto zu erhalten, und bat dann den Tencent-Kundendienst, dies herauszufinden

Natürlich hat das nichts mit Tencent zu tun, die Firma, die mich betrogen hat, ist schuld

Ich habe damit nichts zu tun

5. Befehle

Der Befehl docker run --rm ist jedem bekannt. Nach dem Ausführen einfach beenden. Dadurch kann ein Hammer ausgeführt werden, um das SSH-Zertifikat automatisch zu aktualisieren.

Methode 1

Verwenden Sie nicht docker run --rm, sondern nur docker run

Der Vorteil liegt in der Einfachheit, der Nachteil jedoch darin, dass ausschließlich für diesen Zweck ein Container verwendet wird, was eine Verschwendung von Ressourcen darstellt.

Methode 2

Die geplante Aufgabe führt docker run --rm aus, und das ursprüngliche Beispiel ist

#Cron-Job ausführen
docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 --net=Host \
 neilpang/acme.sh --cron

Tatsächlich ist --cron der Crontab-Parameter von Linux und die spezifische Verwendung ist nicht umständlich.

Wenn Sie crontab verwenden möchten, verwenden Sie crontab

Wenn es Ihnen nicht gefällt, lesen Sie bitte den zweiten Teil des Blogs.

Methode 3

Binden Sie dieses Ding an den Docker-Daemon, schließlich muss der Daemon laufen, damit es keine Ressourcenverschwendung ist

Dies ist der empfohlene Ansatz für acme.sh

Gleiches Beispiel mit Originaltext

$ docker run --rm -itd \
 -v "$(pwd)/out":/acme.sh \
 --net=Host \
 --name=acme.sh \
 neilpang/acme.sh-Daemon

6. Endergebnis

$ docker run --rm -itd \
 -v "$(pwd)/out":/acme.sh \
 -e DP_Id="xxxxxx" \
 -e DP_Schlüssel="xxxx" \
 neilpang/acme.sh --issue --dns dns_dp -d domain.cn -d *.domain.cn Daemon

Dies ist das Ende dieses Artikels zum Abrufen eines dauerhaften kostenlosen SSL-Zertifikats von Let's Encrypt in Docker. Weitere Informationen zum Abrufen eines dauerhaften kostenlosen SSL-Zertifikats von Let's Encrypt in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Docker-Lösung zum Anmelden ohne Root-Rechte
  • So ändern Sie das Root-Passwort von MySQL in Docker
  • So ändern Sie das Root-Passwort in einem Container mit Docker
  • So erhalten Sie Root-Berechtigungen in einem Docker-Container
  • Docker CP kopiert Dateien und gibt den Container ein
  • Docker verwendet Root, um in den Container zu gelangen
  • Lösung für den Docker-Container, der keine Schreibberechtigung für das Host-Verzeichnis hat
  • So fügen Sie Docker ein Zertifikat hinzu

<<:  jQuery realisiert Bildhervorhebung

>>:  Die unangemessenen MaxIdleConns von MySQL führen zu kurzen Verbindungen

Artikel empfehlen

JavaScript, um einen Lotterieeffekt zu erzielen

In diesem Artikel wird der spezifische JavaScript...

So kapseln Sie Paging-Komponenten manuell in Vue3.0

In diesem Artikel wird der spezifische Code der m...

Detaillierte Erklärung der JSONObject-Verwendung

JSONObject ist lediglich eine Datenstruktur, die ...

Implementierung der Graustufenversion mit Nginx und Lua

Installieren Sie memcached yum install -y memcach...

Detaillierte Erklärung des SELINUX-Arbeitsprinzips

1. Einleitung Der Hauptvorteil, den SELinux für L...

React Diff-Algorithmus-Quellcodeanalyse

Inhaltsverzeichnis Einzelner Knoten Diff Einzelel...

jquery+springboot realisiert die Datei-Upload-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Schritte zum Ändern gespeicherter MySQL-Prozeduren

Vorwort Bei der tatsächlichen Entwicklung werden ...

Mit HTML+CSS3 implementierte Anmeldeschnittstelle

Ergebnisse erzielen Bauen Sie zunächst mit HTML e...

Interaktion im Webdesign: Eine kurze Diskussion über Paging-Probleme

Funktion: Zur vorherigen Seite oder zur nächsten ...

Vue-Routing zum Implementieren der Login-Abfangung

Inhaltsverzeichnis 1. Übersicht 2. Routing Naviga...

Detaillierte Erklärung der Docker-Einstiegspunktdatei

Schließen Sie beim Schreiben einer Docker-Datei e...