Verwendung des Certbot-Standalone-Modus zum Abrufen Lassen Sie uns SSL-Zertifikate unter Debian 10 verschlüsseln

Einführung

Let’s Encrypt ist ein Dienst, der kostenlose SSL-Zertifikate über eine automatisierte API anbietet. Der beliebteste Let’s Encrypt-Client ist der EFFʼs https://certbot.eff.org/[Certbot -Client.

Certbot bietet eine Vielzahl von Möglichkeiten, um Ihre Domain zu validieren, Zertifikate abzurufen und Apache und Nginx automatisch zu konfigurieren. In diesem Lernprogramm erfahren Sie, wie Certbot den standalone mode verwendet, um andere Arten von Diensten wie einen Mailserver oder eine Nachricht zu schützen Broker wie RabbitMQ.

Wir werden die Details der SSL-Konfiguration nicht besprechen, aber wenn Sie fertig sind, verfügen Sie über ein gültiges Zertifikat, das automatisch erneuert wird. Darüber hinaus können Sie das erneute Laden Ihres Dienstes automatisieren, um das erneuerte Zertifikat abzurufen.

Voraussetzungen

Bevor Sie dieses Tutorial starten können, benötigen Sie:

  • Ein Debian 10-Server, ein Nicht-Root-Benutzer mit "+ sudo +" - Berechtigungen und eine grundlegende Firewall, wie in https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 beschrieben [dieses Debian 10 Server Setup Tutorial].

  • Ein Domain-Name, der auf Ihren Server verweist. Dies können Sie erreichen, indem Sie dieser documentation zum Erstellen von DNS-Einträgen auf DigitalOcean folgen.

  • Port + 80 + * oder * + 443 + muss auf Ihrem Server * unbenutzt * sein. Wenn sich der Dienst, den Sie sichern möchten, auf einem Computer mit einem Webserver befindet, der beide Ports belegt, müssen Sie einen anderen Modus verwenden, z. B. https://certbot.eff.org/docs/using von Certbot. html # webroot [webroot mode] oder DNS-basierter Herausforderungsmodus.

Schritt 1 - Installation von Certbot

Debian 10 enthält den Certbot-Client in seinem Standard-Repository und sollte für den grundlegenden Gebrauch aktuell genug sein. Wenn Sie DNS-basierte Herausforderungen durchführen oder andere neuere Certbot-Funktionen verwenden müssen, sollten Sie stattdessen die Installation über das Repository "+ buster-backports +" gemäß den Anweisungen von https://certbot.eff.org/lets-encrypt/debianstretch-other [ausführen. die offizielle Certbot-Dokumentation].

Aktualisieren Sie Ihre Paketliste:

sudo apt update

Verwenden Sie "+ apt ", um das " certbot +" -Paket zu installieren:

sudo apt install certbot

Sie können Ihre Installation testen, indem Sie + certbot + auffordern, die Versionsnummer auszugeben:

certbot --version
Outputcertbot

Nachdem wir Certbot installiert haben, führen wir es aus, um unser Zertifikat zu erhalten.

Schritt 2 - Ausführen von Certbot

Certbot muss eine kryptografische Abfrage der Let’s Encrypt-API beantworten, um zu beweisen, dass wir unsere Domain kontrollieren. Dazu werden die Ports "+ 80 " (HTTP) oder " 443 +" (HTTPS) verwendet. Öffnen Sie den entsprechenden Port in Ihrer Firewall:

sudo ufw allow

Ersetzen Sie "+ 443 " oben, wenn dies der von Ihnen verwendete Port ist. ` ufw +` bestätigt, dass Ihre Regel hinzugefügt wurde:

OutputRule added
Rule added (v6)

Wir können jetzt Certbot ausführen, um unser Zertifikat zu erhalten. Mit der Option "+ - Standalone " weisen wir Certbot an, die Herausforderung über einen eigenen integrierten Webserver zu bewältigen. Die Option " - Preferred-Challenges " weist Certbot an, Port " 80 " oder Port " 443 " zu verwenden. Wenn Sie den Port " 80 " verwenden, verwenden Sie die http + -Option " - Bevorzugte Herausforderungen". Verwenden Sie für den Port "+ 443 " " - preferred-challen tls-sni ". Schließlich verwenden wir das " -d " - Flag, um die Domain anzugeben, für die wir ein Zertifikat anfordern. Sie können mehrere " -d +" - Optionen hinzufügen, um mehrere Domänen in einem Zertifikat abzudecken.

Wir werden die Option "+ - preferred-challenges http +" verwenden, um dies zu demonstrieren. Sie sollten jedoch die Option verwenden, die für Ihren Anwendungsfall sinnvoll ist. Führen Sie den folgenden Befehl mit Ihren bevorzugten Optionen aus, um Ihr Zertifikat abzurufen:

sudo certbot certonly --standalone --preferred-challenges  -d

Wenn Sie den Befehl ausführen, werden Sie aufgefordert, eine E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen. Anschließend sollten Sie eine Meldung erhalten, die besagt, dass der Vorgang erfolgreich war und wo Ihre Zertifikate gespeichert sind:

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2019-08-28. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot
  again. To non-interactively renew *all* of your certificates, run
  "certbot renew"
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org/donate-le

Wir haben unsere Zertifikate. Sehen wir uns an, was wir heruntergeladen haben und wie die Dateien mit unserer Software verwendet werden.

Schritt 3 - Konfigurieren Ihrer Anwendung

Die Konfiguration Ihrer Anwendung für SSL würde den Rahmen dieses Artikels sprengen, da für jede Anwendung andere Anforderungen und Konfigurationsoptionen gelten. Schauen wir uns jedoch an, was Certbot für uns heruntergeladen hat. Verwenden Sie "+ ls +", um das Verzeichnis aufzulisten, in dem sich Ihre Schlüssel und Zertifikate befinden:

sudo ls /etc/letsencrypt/live/

Sie werden die folgende Ausgabe sehen:

Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

Die Datei "+ README +" in diesem Verzeichnis enthält weitere Informationen zu jeder dieser Dateien. Meistens benötigen Sie nur zwei dieser Dateien:

  • + privkey.pem +: Dies ist der private Schlüssel für das Zertifikat. Dies muss sicher und geheim gehalten werden, weshalb der größte Teil des Verzeichnisses "+ / etc / letsencrypt " über sehr eingeschränkte Berechtigungen verfügt und nur für den Benutzer "* root *" zugänglich ist. Die meisten Softwarekonfigurationen bezeichnen dies als " ssl-certificate-key " oder " ssl-certificate-key-file +".

  • + fullchain.pem +: Dies ist unser Zertifikat, das mit allen Zwischenzertifikaten gebündelt ist. Die meisten Programme verwenden diese Datei für das eigentliche Zertifikat und verweisen in ihrer Konfiguration mit einem Namen wie "+ ssl-certificate +" darauf.

Weitere Informationen zu den anderen vorhandenen Dateien finden Sie im Abschnitt Wo sind meine Zertifikate? Der Certbot-Dokumentation.

Einige Softwareprodukte benötigen Zertifikate in anderen Formaten oder an anderen Standorten oder mit anderen Benutzerberechtigungen. Es ist am besten, alles im Verzeichnis "+ letsencrypt +" zu belassen und dort keine Berechtigungen zu ändern (Berechtigungen werden bei der Erneuerung ohnehin überschrieben), aber manchmal ist dies keine Option. In diesem Fall müssen Sie ein Skript schreiben, um Dateien zu verschieben und die Berechtigungen nach Bedarf zu ändern. Dieses Skript muss immer dann ausgeführt werden, wenn Certbot die Zertifikate erneuert. Dies wird im Folgenden behandelt.

Schritt 4 - Umgang mit Certbot Automatic Renewals

Let 's Encrypt-Zertifikate sind nur neunzig Tage gültig. Dies soll Benutzer dazu ermutigen, den Prozess der Zertifikatserneuerung zu automatisieren. Das von uns installierte "+ certbot " - Paket kümmert sich darum, indem es ein Erneuerungsskript zu " / etc / cron.d +" hinzufügt. Dieses Skript wird zweimal täglich ausgeführt und erneuert jedes Zertifikat, das innerhalb von 30 Tagen nach Ablauf abläuft.

Da unsere Zertifikate automatisch erneuert werden, müssen wir nach einer Erneuerung noch weitere Aufgaben ausführen können. Wir müssen unseren Server mindestens neu starten oder neu laden, um die neuen Zertifikate abzurufen. Wie in Schritt 3 erwähnt, müssen wir möglicherweise die Zertifikatdateien auf irgendeine Weise bearbeiten, damit sie mit der von uns verwendeten Software funktionieren. Dies ist der Zweck der https://certbot.eff.org/docs/api/hooks.html?highlight=renew_hook#certbot.hooks.renew_hook [+ renew_hook +] -Option von Certbot.

Um ein "+ renew_hook +" hinzuzufügen, müssen wir die Erneuerungskonfigurationsdatei von Certbot aktualisieren. Certbot speichert alle Details, wie Sie das Zertifikat zum ersten Mal abgerufen haben, und wird bei der Erneuerung mit denselben Optionen ausgeführt. Wir müssen nur unseren Haken hinzufügen. Öffne die Konfigurationsdatei mit deinem Lieblingseditor:

sudo nano /etc/letsencrypt/renewal/.conf

Eine Textdatei mit einigen Konfigurationsoptionen wird geöffnet. Fügen Sie Ihren Haken in die letzte Zeile ein. In diesem Fall verwenden wir ein Beispiel, in dem ein "+ rabbitmq +" - Dienst neu geladen wird:

/etc/letsencrypt/renewal/your_domain.conf

renew_hook =

Aktualisieren Sie den obigen Befehl auf die erforderlichen Werte, um den Server neu zu laden oder um Ihr benutzerdefiniertes Dateimungsskript auszuführen. Unter Debian verwenden Sie normalerweise "+ systemctl +", um einen Dienst neu zu laden.

Speichern und schließen Sie die Datei, und führen Sie dann einen Certbot-Testlauf aus, um sicherzustellen, dass die Syntax in Ordnung ist:

sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie fertig. Certbot wird bei Bedarf erneuert und führt alle Befehle aus, die erforderlich sind, um Ihren Dienst mithilfe der neuen Dateien zu erhalten.

Fazit

In diesem Lernprogramm haben wir den Certbot Let’s Encrypt-Client installiert, ein SSL-Zertifikat im Standalone-Modus heruntergeladen und die automatische Verlängerung mit Erneuerungs-Hooks aktiviert. Dies sollte Ihnen einen guten Einstieg in die Verwendung von Let’s Encrypt-Zertifikaten mit anderen Diensten als Ihrem typischen Webserver ermöglichen.

Weitere Informationen finden Sie unter Certbot’s documentation.