So verwenden Sie den Certbot-Standalone-Modus zum Abrufen von SSL-Zertifikaten unter CentOS 7

Einführung

Let’s Encrypt ist ein Dienst, der kostenlose SSL-Zertifikate über eine automatisierte API anbietet. Der beliebteste Let's Encrypt-Client istEFFCertbot.

Certbot bietet eine Vielzahl von Möglichkeiten, um Ihre Domain zu validieren, Zertifikate abzurufen und Apache und Nginx automatisch zu konfigurieren. In diesem Tutorial werden wir denstandalone-Modus von Certbot erläutern und erläutern, wie Sie damit andere Arten von Diensten sichern können, z. B. einen Mailserver oder einen Nachrichtenbroker 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 CentOS 7-Server mit einem nicht root-fähigen, sudo-fähigen Benutzer, wie inthis CentOS 7 initial server setup tutorial angegeben.

  • Ein Domain-Name, der auf Ihren Server verweist. Dies können Sie erreichen, indem Sie „https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean[How to Set Mit DigitalOcean einen Hostnamen erstellen]. “ In diesem Tutorial werden durchgehendexample.com verwendet.

  • Port 80or 443 muss auf Ihrem Server nicht verwendet werden. 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.webroot modevon Certbot.

[[Schritt-1 - Installieren von Certbot]] == Schritt 1 - Installieren von Certbot

Certbot ist in einem zusätzlichen Repository namensExtra Packages for Enterprise Linux (EPEL) verpackt. Führen Sie den folgenden Befehlyumaus, um dieses Repository unter CentOS 7 zu aktivieren:

sudo yum --enablerepo=extras install epel-release

Anschließend kann das Paketcertbot mityum installiert werden:

sudo yum install certbot

Sie können bestätigen, dass Ihre Installation erfolgreich war, indem Sie den Befehlcertbotaufrufen:

certbot --version
Outputcertbot 0.31.0

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

[[Schritt-2 -—- Ausführen von Certbot]] == 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 Ports80 (HTTP) oder443 (HTTPS) verwendet. Wenn Sie eine Firewall verwenden, öffnen Sie jetzt den entsprechenden Port. Fürfirewalld wäre dies ungefähr so:

sudo firewall-cmd --add-service=http
sudo firewall-cmd --runtime-to-permanent

Ersetzen Siehttps durchhttp oben, wenn Sie Port 443 verwenden.

Wir können jetzt Certbot ausführen, um unser Zertifikat zu erhalten. Wir werden die Option--standaloneverwenden, um Certbot anzuweisen, die Herausforderung mithilfe eines eigenen integrierten Webservers zu bewältigen. Die Option--preferred-challenges weist Certbot an, Port 80 oder Port 443 zu verwenden. Wenn Sie Port 80 verwenden, möchten Sie--preferred-challenges http. Für Port 443 wäre es--preferred-challenges tls-sni. Schließlich wird das-d-Flag verwendet, um die Domäne anzugeben, für die Sie ein Zertifikat anfordern. Sie können mehrere-d-Optionen hinzufügen, um mehrere Domänen in einem Zertifikat abzudecken.

sudo certbot certonly --standalone --preferred-challenges http -d example.com

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/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-10-09. 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]] == 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 Siels, um das Verzeichnis aufzulisten, in dem sich unsere Schlüssel und Zertifikate befinden:

sudo ls /etc/letsencrypt/live/example.com
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

DieREADME-Datei 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 von/etc/letsencryptüber sehr restriktive Berechtigungen verfügt und nur für den Benutzer vonrootzugänglich ist. Die meisten Softwarekonfigurationen bezeichnen dies als etwas Ähnliches wiessl-certificate-key oderssl-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-Zertifikat" darauf.

Weitere Informationen zu den anderen vorhandenen Dateien finden Sie im Abschnitt "https://certbot.eff.org/docs/using.html#where-are-my-certificates[Where are my certificates]" der Certbot-Dokumentation.

Manche Software benötigt Zertifikate in anderen Formaten, an anderen Orten oder mit anderen Benutzerberechtigungen. Es ist am besten, alles im Verzeichnisletsencryptzu belassen und dort keine Berechtigungen zu ändern (Berechtigungen werden ohnehin nur bei der Erneuerung überschrieben), aber manchmal ist dies einfach 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 -—- Aktivieren der automatischen Zertifikatserneuerung]] == Schritt 4 - Aktivieren der automatischen Zertifikatserneuerung

Let´s Encrypt-Zertifikate sind nur neunzig Tage gültig. Dies soll Benutzer dazu ermutigen, ihren Zertifikaterneuerungsprozess zu automatisieren. Das von uns installiertecertbot-Paket enthält einen Systemd-Timer, mit dem zweimal täglich nach Erneuerungen gesucht wird. Dieser ist jedoch standardmäßig deaktiviert. Aktivieren Sie den Timer, indem Sie den folgenden Befehl ausführen:

sudo systemctl enable --now certbot-renew.timer
OutputCreated symlink from /etc/systemd/system/timers.target.wants/certbot-renew.timer to /usr/lib/systemd/system/certbot-renew.timer.

Sie können den Status des Timers mitsystemctl überprüfen:

sudo systemctl status certbot-renew.timer
Output● certbot-renew.timer - This is the timer to set the schedule for automated renewals
   Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since Fri 2019-05-31 15:10:10 UTC; 48s ago

Der Timer sollte aktiv sein. Certbot erneuert jetzt automatisch alle Zertifikate auf diesem Server, wenn dies erforderlich ist.

[[Schritt-5 - Ausführen von Aufgaben, wenn Zertifikate erneuert werden]] == Schritt 5 - Ausführen von Aufgaben, wenn Zertifikate erneuert werden

Da unsere Zertifikate nun automatisch erneuert werden, müssen Sie nach einer Erneuerung bestimmte 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 derrenew_hook-Option von Certbot.

Umrenew_hook hinzuzufügen, aktualisieren wir die Konfigurationsdatei für die Erneuerung von Certbot. 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 vi /etc/letsencrypt/renewal/example.com.conf

Eine Textdatei mit einigen Konfigurationsoptionen wird geöffnet. Fügen Sie Ihren Haken in die letzte Zeile ein:

/etc/letsencrypt/renewal/example.com.conf

renew_hook = systemctl reload rabbitmq

Aktualisieren Sie den obigen Befehl auf die erforderlichen Werte, um den Server neu zu laden oder um Ihr benutzerdefiniertes Dateimungsskript auszuführen. Unter CentOS verwenden Sie normalerweise meistenssystemctl, 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 unterCertbot’s documentation.