So sichern Sie Nginx mit Let’s Encrypt unter FreeBSD

Einführung

Let’s Encrypt ist eine Zertifizierungsstelle (Certificate Authority, CA), mit der auf einfache Weise kostenlose TLS / SSL-Zertifikate abgerufen und installiert werden können, um verschlüsseltes HTTPS auf Webservern zu ermöglichen. Es vereinfacht den Prozess, indem ein Software-Client, Certbot, bereitgestellt wird, der die meisten Schritte automatisiert.

In diesem Tutorial zeigen wir Ihnen, wie Sie mit Certbot ein kostenloses SSL-Zertifikat erhalten und auf einem FreeBSD-Server mit Nginx verwenden. Wir zeigen Ihnen auch, wie Sie Ihr SSL-Zertifikat automatisch erneuern können.

In diesem Lernprogramm wird anstelle einer separaten Serverblockdatei die Standardkonfigurationsdatei von Nginx verwendet. Wir empfehlen im Allgemeinen neue Nginx-Server-Blockdateien für jede Domain zu erstellen, weil Es hilft dabei, einige häufige Fehler zu vermeiden, und behält die Standarddateien wie beabsichtigt als Ersatzkonfiguration bei.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Ein FreeBSD-Server. Wenn Sie neu in der Arbeit mit FreeBSD 11 sind, folgen Sie this guide, um Ihnen zu helfen loslegen.

  • Nginx installiert und konfiguriert auf Ihrem Server. Anweisungen zum Einrichten finden Sie in unserem Handbuch unter Installieren von Nginx unter FreeBSD 11.2.

  • Ein registrierter Domainname, den Sie besitzen und kontrollieren. Wenn Sie noch keinen registrierten Domainnamen haben, können Sie einen bei einem der vielen Domainnamen-Registrare registrieren (z. Namecheap, GoDaddy usw.).

  • Ein DNS * A Record *, der Ihre Domain auf die öffentliche IP-Adresse Ihres Servers verweist. Weitere Informationen zum Hinzufügen von Hostnamen finden Sie unter this hostname tutorial. Dies ist erforderlich, da Let’s Encrypt überprüft, ob Sie Eigentümer der Domain sind, für die ein Zertifikat ausgestellt wird. Wenn Sie beispielsweise ein Zertifikat für "+ example.com " erhalten möchten, muss diese Domain auf Ihren Server aufgelöst werden, damit der Überprüfungsprozess funktioniert. Unser Setup verwendet " example.com " und " www.example.com +" als Domainnamen, daher sind * beide DNS-Einträge erforderlich *.

Sobald Sie diese Voraussetzungen erfüllt haben, können Sie mit der Installation von Certbot, der Let’s Encrypt-Clientsoftware, fortfahren.

Schritt 1 - Installation von Certbot

Der erste Schritt zur Verwendung von Let’s Encrypt zum Abrufen eines SSL-Zertifikats besteht darin, die Client-Software "+ certbot +" auf Ihrem Server zu installieren. Die neueste Version von Certbot kann von der Quelle aus unter Verwendung von FreeBSDs ports system installiert werden.

Rufen Sie zunächst einen komprimierten Snapshot des Ports-Baums ab:

sudo portsnap fetch

Es kann einige Minuten dauern, bis dieser Befehl ausgeführt ist. Wenn es fertig ist, extrahieren Sie den Schnappschuss:

sudo portsnap extract

Es kann auch eine Weile dauern, bis dieser Befehl beendet ist. Navigieren Sie anschließend zum Verzeichnis "+ py-certbot +" im Ports-Baum:

cd /usr/ports/security/py-certbot

Verwenden Sie dann den Befehl "+ make " mit den Rechten " sudo +", um den Certbot-Quellcode herunterzuladen und zu kompilieren:

sudo make install clean

Navigieren Sie als Nächstes zum Verzeichnis + py-certbot-nginx + im Ports-Baum:

cd /usr/ports/security/py-certbot-nginx

Führen Sie den Befehl + make + in diesem Verzeichnis erneut aus. Dadurch wird das Plugin "+ nginx +" für Certbot installiert, mit dem wir die SSL-Zertifikate erhalten:

sudo make install clean

Während der Installation dieses Plugins werden einige blaue Dialogfenster angezeigt, die wie folgt aussehen:

image: https: //assets.digitalocean.com/articles/letsencrypt_freebsd/py-nginx.png [py-certbot-nginx dialog window example]

Hier haben Sie die Möglichkeit, die Dokumentation für das Plugin und seine Abhängigkeiten zu installieren. Für die Zwecke dieses Tutorials können Sie einfach "+ ENTER +" drücken, um die Standardoptionen in diesen Fenstern zu akzeptieren, mit denen diese Dokumentation installiert wird.

Der "+ certbot +" Let’s Encrypt-Client kann jetzt verwendet werden. Bevor Sie Ihre Zertifikate erhalten, ist es jedoch wichtig, eine Firewall einzurichten und HTTPS-Datenverkehr zuzulassen, sofern Sie dies noch nicht getan haben.

Schritt 2 - Einrichten einer Firewall und Zulassen des HTTPS-Zugriffs

Wenn Sie bereits eine Firewall auf Ihrem Server eingerichtet haben, sollten Sie sicherstellen, dass diese den HTTPS-Zugriff ermöglicht (über den Port "+ 443 +"). Wenn Sie noch keine Firewall eingerichtet haben, befolgen Sie dazu die Anweisungen in diesem Schritt.

Öffnen Sie Ihre "+ rc.conf " - Datei, die sich im " / etc / " - Verzeichnis befindet, mit Ihrem bevorzugten Editor. Hier verwenden wir " ee +":

sudo ee /etc/rc.conf

Diese Datei wird verwendet, um FreeBSD mitzuteilen, welche Dienste beim Hochfahren der Maschine gestartet werden sollen. Fügen Sie am oberen Rand der Datei die folgenden hervorgehobenen Zeilen hinzu:

/etc/rc.conf

. . .
nginx_enable="YES"

Die einzelnen Anweisungen und ihre Einstellungen haben folgende Funktionen:

  • + firewall_enable =" YES "+ - Damit kann die Firewall beim Booten des Servers gestartet werden.

  • + firewall_type =" workstation "+ - FreeBSD bietet verschiedene Standardtypen von Firewalls mit jeweils leicht unterschiedlichen Konfigurationen. Wenn Sie den Typ "+ Workstation +" deklarieren, schützt die Firewall diesen Server nur mit Stateful-Regeln.

  • + firewall_myservices =" 22 / tcp 80 / tcp 443 / tcp "+ - In der Anweisung + firewall_myservices + können Sie die TCP-Ports auflisten, die Sie durch die Firewall zulassen möchten. In diesem Beispiel geben wir die Ports "+ 22 ", " 80 " und " 443 +" an, um SSH-, HTTP- und HTTPS-Zugriff auf den Server zu ermöglichen.

  • + firewall_allowservices =" any "+ - Damit kann ein Computer von einer beliebigen IP-Adresse über die in der Anweisung + firewall_myservices + angegebenen Ports kommunizieren.

Speichern Sie nach dem Hinzufügen dieser Zeilen die Datei und schließen Sie den Editor, indem Sie die Tastenkombination STRG + C + drücken, "+ exit " eingeben und dann " ENTER +" drücken.

Starten Sie dann den Firewall-Dienst "+ ipfw ". Da Sie die Firewall auf diesem Server zum ersten Mal starten, kann dies dazu führen, dass der Server blockiert und über SSH nicht mehr erreichbar ist. Mit dem folgenden Befehl " nohup +" - der für "no hangups" steht - wird die Firewall gestartet, wobei ein Blockieren verhindert wird. Außerdem werden die Standardausgabe und der Fehler in eine temporäre Protokolldatei umgeleitet:

sudo nohup service ipfw start >/tmp/ipfw.log 2>&1

Wenn Sie jedoch "+ csh " oder " tcsh " verwenden, wird bei dieser Umleitung " Mehrdeutige Ausgabe umleiten. " In Ihrer Ausgabe angezeigt. Führen Sie in diesem Fall stattdessen Folgendes aus, um " ipfw +" zu starten:

sudo nohup service ipfw start >&/tmp/ipfw.log

In Zukunft können Sie die "+ ipfw +" - Firewall wie jeden anderen Dienst verwalten. Zum Beenden, Starten und Neustarten des Dienstes führen Sie beispielsweise die folgenden Befehle aus:

sudo service ipfw stop
sudo service ipfw start
sudo service ipfw restart

Wenn eine Firewall konfiguriert ist, können Sie jetzt Certbot ausführen und Ihre Zertifikate abrufen.

Schritt 3 - Beziehen eines SSL-Zertifikats

Certbot bietet eine Vielzahl von Möglichkeiten, um SSL-Zertifikate über verschiedene Plugins abzurufen. Das + nginx + Plugin kümmert sich um die Neukonfiguration von Nginx und das Neuladen der Konfigurationsdatei:

sudo certbot --nginx -d  -d

Wenn Sie "+ certbot " zum ersten Mal auf diesem Server ausführen, werden Sie vom Client aufgefordert, eine E-Mail-Adresse einzugeben und den Let's Encrypt-Nutzungsbedingungen zuzustimmen. Anschließend kommuniziert ` certbot +` mit dem Let’s Encrypt-Server und führt eine Abfrage durch, um zu überprüfen, ob Sie die Domäne steuern, für die Sie ein Zertifikat anfordern.

Wenn die Herausforderung erfolgreich ist, werden Sie von Certbot gefragt, wie Sie Ihre HTTPS-Einstellungen konfigurieren möchten:

Output. . .
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Wählen Sie Ihre Wahl und drücken Sie "+ ENTER". Dadurch wird die Konfiguration aktualisiert und Nginx neu geladen, um die neuen Einstellungen zu übernehmen. + certbot + wird mit einer Meldung abgeschlossen, die besagt, dass der Vorgang erfolgreich war und wo Ihre Zertifikate gespeichert sind:

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /usr/local/etc/letsencrypt/live/example.com/fullchain.pem
  Your key file has been saved at:
  /usr/local/etc/letsencrypt/live/example.com/privkey.pem
  Your cert will expire on 2018-09-24. 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 /usr/local/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

Ihre Zertifikate werden jetzt heruntergeladen, installiert und konfiguriert. Versuchen Sie, Ihre Website mit "+ https: // +" neu zu laden, und beachten Sie die Sicherheitsanzeige Ihres Browsers. Dies sollte bedeuten, dass die Site ordnungsgemäß gesichert ist, normalerweise mit einem grünen Schlosssymbol. Wenn Sie Ihren Server mit dem SSL Labs-Servertest testen, erhält er die Note * A *.

Nachdem Sie bestätigt haben, dass Sie Ihre Site über HTTPS erreichen können, können Sie mit dem letzten Schritt dieses Lernprogramms fortfahren, in dem Sie bestätigen, dass Sie Ihre Zertifikate verlängern können, und anschließend einen Prozess konfigurieren, um sie automatisch zu verlängern.

Schritt 4 - Überprüfen der automatischen Erneuerung von Certbot

Let´s Encrypt-Zertifikate sind nur neunzig Tage gültig. Dies soll Benutzer dazu ermutigen, ihren Zertifikaterneuerungsprozess zu automatisieren. In diesem Schritt wird beschrieben, wie Sie die Zertifikatserneuerung automatisieren, indem Sie eine "+ cron +" - Task einrichten. Bevor Sie diese automatische Verlängerung einrichten, ist es wichtig zu testen, ob Sie Zertifikate korrekt verlängern können.

Um den Erneuerungsprozess zu testen, können Sie mit + certbot + einen Probelauf durchführen:

sudo certbot renew --dry-run

Wenn keine Fehler angezeigt werden, können Sie eine neue Crontab erstellen:

sudo crontab -e

Dies öffnet eine neue + crontab + Datei. Fügen Sie der neuen Datei den folgenden Inhalt hinzu, der "+ cron " anweist, den Befehl " certbot renew " zweimal täglich um 12.00 Uhr und Mitternacht auszuführen. ` certbot renew +` prüft, ob irgendwelche Zertifikate auf dem System kurz vor dem Ablauf stehen und wird versuchen, sie bei Bedarf zu erneuern:

0 0,12 * * * /usr/local/bin/certbot renew

Beachten Sie, dass dieser Vorgang als * root * ausgeführt wird, da Sie dem Befehl + crontab -e + ein + sudo + vorangestellt haben. Dies ist erforderlich, da für die Ausführung von certbot Superuser-Berechtigungen erforderlich sind.

Wenn die automatische Erneuerung jemals fehlschlägt, sendet Let’s Encrypt eine Nachricht an die von Ihnen angegebene E-Mail-Adresse und warnt Sie, wenn Ihr Zertifikat in Kürze abläuft.

Fazit

In diesem Tutorial haben wir den Let’s Encrypt-Client "+ certbot +" installiert, SSL-Zertifikate für unsere Domain heruntergeladen, Nginx für die Verwendung dieser Zertifikate konfiguriert und die automatische Zertifikatserneuerung eingerichtet. Wenn Sie weitere Fragen zur Verwendung von Certbot haben, ist Ihre Dokumentation ein guter Ausgangspunkt.