So sichern Sie Apache mit Let’s Encrypt unter Debian 10

Einführung

Let’s Encrypt ist eine Zertifizierungsstelle (Certificate Authority, CA), mit der auf einfache Weise kostenlose https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with abgerufen und installiert werden kann -ssl-certificates-private-keys-and-csrs [TLS / SSL-Zertifikate], wodurch verschlüsseltes HTTPS auf Webservern aktiviert wird. Es vereinfacht den Prozess, indem ein Software-Client (Certbot) bereitgestellt wird, der versucht, die meisten (wenn nicht alle) der erforderlichen Schritte zu automatisieren. Derzeit ist der gesamte Prozess zum Abrufen und Installieren eines Zertifikats auf Apache und Nginx vollständig automatisiert.

In diesem Tutorial verwenden Sie Certbot, um ein kostenloses SSL-Zertifikat für Apache unter Debian 10 zu erhalten und Ihr Zertifikat für die automatische Verlängerung einzurichten.

In diesem Lernprogramm wird anstelle der Standardkonfigurationsdatei eine separate virtuelle Apache-Hostdatei verwendet. https://www.digitalocean.com/community/tutorials/installationsanleitung-des-apache-webservers-on-debian-10#step-5-%E2%80%94-setting-up-virtual -hosts- (empfohlen) [Wir empfehlen] das Erstellen neuer virtueller Apache-Hostdateien für jede Domäne, da hierdurch häufige Fehler vermieden und die Standarddateien als Fallback-Konfiguration beibehalten werden.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein Debian 10-Server wird eingerichtet, indem dieser initial server setup for Debian 10 -Tutorial gefolgt wird, einschließlich eines Nicht-Root-Servers * Benutzer mit "+ sudo +" - Berechtigungen und einer Firewall.

  • Ein vollständig registrierter Domainname. In diesem Tutorial wird * your_domain * als Beispiel verwendet. Sie können einen Domain-Namen unter https://namecheap.com [Namecheap] erwerben, einen kostenlosen unter Freenom erhalten oder den Domain-Registrar Ihrer Wahl verwenden .

  • Die beiden folgenden DNS-Einträge wurden für Ihren Server eingerichtet. Um diese einzurichten, folgen Sie diese Anweisungen zum Hinzufügen von Domains und dann https://www.digitalocean.com / docs / networking / dns / how-to / manage-records / [diese Anweisungen zum Erstellen von DNS-Einträgen].

  • Ein A-Datensatz mit "++", der auf die öffentliche IP-Adresse Ihres Servers verweist.

  • Ein A-Eintrag mit "+ www. +" Verweist auf die öffentliche IP-Adresse Ihres Servers.

  • Apache wird installiert, indem How To Install Apache on Debian 10. Stellen Sie sicher, dass Sie über eine https://www.digitalocean.com/community/tutorials/anleitung zur Installation des Apache-Webservers auf Debian 10 #step-5% E2% 80% 94 verfügen -set-up-virtual-hosts- (empfohlen) [virtuelle Host-Datei], die für Ihre Domain eingerichtet wurde. In diesem Tutorial wird als Beispiel "+ / etc / apache2 / sites-available / .conf +" verwendet.

Schritt 1 - Installation von Certbot

Der erste Schritt zur Verwendung von Let’s Encrypt zum Abrufen eines SSL-Zertifikats besteht darin, die Certbot-Software auf Ihrem Server zu installieren.

Zum jetzigen Zeitpunkt ist Certbot standardmäßig nicht in den Debian-Software-Repositories verfügbar. Um die Software mit "+ apt " herunterzuladen, müssen Sie das Backports-Repository zu Ihrer " sources.list " -Datei hinzufügen, in der " apt +" nach Paketquellen sucht. Backports sind Pakete aus Debians Test- und Unstable-Distributionen, die neu kompiliert werden, damit sie ohne neue Bibliotheken auf stabilen Debian-Distributionen ausgeführt werden können.

Um das Backports-Repository hinzuzufügen, öffnen (oder erstellen) Sie die Datei "+ sources.list" in Ihrem "+ / etc / apt / +" -Verzeichnis:

sudo nano /etc/apt/sources.list

Fügen Sie am Ende der Datei die folgende Zeile hinzu:

/etc/apt/sources.list.d/sources.list

. . .
deb http://mirrors.digitalocean.com/debian buster-backports main
deb-src http://mirrors.digitalocean.com/debian buster-backports main

Dies beinhaltet die "+ main" -Pakete, die Debian Free Software Guidelines (DFSG) - kompatibel sind, sowie die "+ non-free" - und "+ contrib" -Pakete `Komponenten, die entweder selbst nicht DFSG-konform sind oder Abhängigkeiten in dieser Kategorie enthalten.

Speichern und schließen Sie die Datei, indem Sie + CTRL + X +, + Y +, dann + ENTER + drücken und dann Ihre Paketlisten aktualisieren:

sudo apt update

Installieren Sie dann Certbot mit dem folgenden Befehl. Beachten Sie, dass die Option "+ -t " " apt +" anweist, nach dem Paket zu suchen, indem Sie im soeben hinzugefügten Backports-Repository suchen:

sudo apt install python-certbot-apache -t buster-backports

Certbot ist jetzt einsatzbereit. Damit SSL für Apache konfiguriert werden kann, muss jedoch überprüft werden, ob Apache richtig konfiguriert wurde.

Schritt 2 - Einrichten des SSL-Zertifikats

Certbot muss in der Lage sein, den richtigen virtuellen Host in Ihrer Apache-Konfiguration zu finden, damit SSL automatisch konfiguriert wird. Dies geschieht insbesondere, indem nach einer Anweisung "+ ServerName +" gesucht wird, die mit der Domäne übereinstimmt, für die Sie ein Zertifikat anfordern.

Wenn Sie dem https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-debian-10#step-5-%E2%80%94-setting gefolgt sind -up-virtual-hosts- (empfohlen) [Schritt zur Einrichtung des virtuellen Hosts im Apache-Installations-Tutorial], sollten Sie einen VirtualHost-Block für Ihre Domain unter + / etc / apache2 / sites-available / .conf + mit haben Die Direktive "+ ServerName +" ist bereits richtig gesetzt.

Um dies zu überprüfen, öffnen Sie die virtuelle Hostdatei für Ihre Domain mit + nano + oder Ihrem bevorzugten Texteditor:

sudo nano /etc/apache2/sites-available/.conf

Suchen Sie die vorhandene Zeile "+ ServerName ". Es sollte so aussehen, mit Ihrem eigenen Domainnamen anstelle von `+`:

/etc/apache2/sites-available/your_domain.conf

...
ServerName ;
...

Aktualisieren Sie die Direktive "+ ServerName +", um auf Ihren Domain-Namen zu verweisen. Speichern Sie dann die Datei, beenden Sie Ihren Editor und überprüfen Sie die Syntax Ihrer Konfigurationsänderungen:

sudo apache2ctl configtest

Wenn keine Syntaxfehler vorliegen, wird dies in Ihrer Ausgabe angezeigt:

OutputSyntax OK

Wenn Sie eine Fehlermeldung erhalten, öffnen Sie die virtuelle Hostdatei erneut und suchen Sie nach Tippfehlern oder fehlenden Zeichen. Wenn die Syntax Ihrer Konfigurationsdatei korrekt ist, laden Sie Apache neu, um die neue Konfiguration zu laden:

sudo systemctl reload apache2

Certbot kann nun den richtigen "+ VirtualHost +" - Block finden und aktualisieren.

Als Nächstes aktualisieren wir die Firewall, um HTTPS-Verkehr zuzulassen.

Schritt 3 - Ermöglichen von HTTPS durch die Firewall

Wenn Sie die "+ ufw " - Firewall aktiviert haben, wie in den vorausgesetzten Handbüchern empfohlen, müssen Sie die Einstellungen anpassen, um HTTPS-Datenverkehr zuzulassen. Zum Glück enthält ` ufw +` bei der Installation unter Debian einige Profile, die das Ändern der Firewall-Regeln für HTTP- und HTTPS-Verkehr vereinfachen.

Sie können die aktuelle Einstellung anzeigen, indem Sie Folgendes eingeben:

sudo ufw status

Wenn Sie Schritt 2 unseres Leitfadens unter https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-debian-10#step-2-%E2 befolgt haben % 80% 94-Anpassung-der-Firewall [Wie installiert man Apache unter Debian 10], die Ausgabe dieses Befehls sieht so aus, dass nur HTTP-Verkehr zum Webserver erlaubt ist:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW (v6)                   ALLOW       Anywhere (v6)

Um zusätzlich HTTPS-Verkehr zuzulassen, lassen Sie das Profil "WWW Full" zu und löschen Sie die überflüssige Berechtigung für das Profil "WWW":

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

Ihr Status sollte jetzt so aussehen:

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW Full                   ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW Full (v6)              ALLOW       Anywhere (v6)

Lassen Sie uns als Nächstes Certbot ausführen und unsere Zertifikate abrufen.

Schritt 4 - Beziehen eines SSL-Zertifikats

Certbot bietet eine Vielzahl von Möglichkeiten, SSL-Zertifikate über Plugins abzurufen. Das Apache-Plugin kümmert sich darum, Apache neu zu konfigurieren und die Konfiguration bei Bedarf neu zu laden. Geben Sie Folgendes ein, um dieses Plugin zu verwenden:

sudo certbot --apache -d  -d

Dies führt "+ certbot " mit dem Plugin " - apache " aus und verwendet " -d +", um die Namen anzugeben, für die das Zertifikat gültig sein soll.

Wenn Sie + certbot + zum ersten Mal ausführen, werden Sie aufgefordert, eine E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen. Darüber hinaus werden Sie gefragt, ob Sie Ihre E-Mail-Adresse an die Electronic Frontier Foundation weitergeben möchten, eine gemeinnützige Organisation, die sich für digitale Rechte einsetzt und auch Certbot-Hersteller ist. Fühlen Sie sich frei, "+ Y " einzugeben, um Ihre E-Mail-Adresse mitzuteilen, oder " N +", um abzulehnen.

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 dies erfolgreich ist, werden Sie von "+ certbot +" gefragt, wie Sie Ihre HTTPS-Einstellungen konfigurieren möchten:

OutputPlease 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". Die Konfiguration wird automatisch aktualisiert und Apache wird 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:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2019-10-20. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot again
  with the "certonly" option. 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

Ihre Zertifikate werden heruntergeladen, installiert und geladen. Versuchen Sie, Ihre Website mit "+ https: // +" neu zu laden, und beachten Sie die Sicherheitsanzeige Ihres Browsers. Es sollte anzeigen, 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 *.

Zum Abschluss testen wir den Erneuerungsprozess.

Schritt 5 - Ü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. 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 automatisch alle Zertifikate, die innerhalb von 30 Tagen nach dem Ablaufdatum vorliegen.

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

sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie fertig. Bei Bedarf erneuert Certbot Ihre Zertifikate und lädt Apache neu, um die Änderungen zu übernehmen. 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 Lernprogramm haben Sie den Let’s Encrypt-Client "+ certbot +" installiert, SSL-Zertifikate für Ihre Domain heruntergeladen, Apache 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.