So sichern Sie Apache mit Let’s Encrypt unter CentOS 7

Einführung

Let’s Encrypt ist eine Zertifizierungsstelle (Certificate Authority, CA), die kostenlose Zertifikate für https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates- bereitstellt. private-keys-and-csrs [TLS-Verschlüsselung (Transport Layer Security)], wodurch verschlüsseltes HTTPS auf Webservern ermöglicht wird. Es vereinfacht das Erstellen, Überprüfen, Signieren, Installieren und Erneuern von Zertifikaten, indem ein Software-Client bereitgestellt wird, der die meisten Schritte automatisiert - https://certbot.eff.org/ [Certbot].

In diesem Lernprogramm richten Sie mit Certbot ein TLS / SSL-Zertifikat von Let’s Encrypt auf einem CentOS 7-Server ein, auf dem Apache als Webserver ausgeführt wird. Darüber hinaus automatisieren Sie den Zertifikatserneuerungsprozess mithilfe eines Cron-Jobs. Weitere Informationen hierzu finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-. on-a-vps [Verwendung von Cron zur Automatisierung von Aufgaben auf einem VPS].

Voraussetzungen

Um diesen Leitfaden zu vervollständigen, benötigen Sie:

  • Ein CentOS 7-Server wird eingerichtet, indem https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 dem CentOS 7-Handbuch zur Ersteinrichtung von Servern folgt] mit einem Benutzer, der kein Root-Benutzer ist + sudo + Privilegien.

  • Eine Basis-Firewall, die gemäß den Additional Recommended Steps for New konfiguriert wurde CentOS 7-Server.

  • Auf dem CentOS 7-Server installierter Apache mit einem konfigurierten virtuellen Host. Weitere Informationen zum Einrichten finden Sie in unserem Tutorial How To Install the Apache Web Server unter CentOS 7. Vergewissern Sie sich, dass Sie über eine https://www.digitalocean.com/community/tutorials/anleitung zum Installieren des Apache-Webservers auf Centos 7 # Schritt 4% E2% 80% 94 verfügen -Einrichtung-virtueller-Hosts- (empfohlen) [virtuelle Hostdatei] für Ihre Domain. In diesem Tutorial wird als Beispiel "+ / etc / httpd / sites-available / .conf +" verwendet.

  • Sie sollten den registrierten Domainnamen besitzen oder kontrollieren, mit dem Sie das Zertifikat verwenden möchten. Wenn Sie noch keinen registrierten Domain-Namen haben, können Sie einen unter https://namecheap.com [Namecheap] erwerben. Einen erhalten Sie kostenlos unter Freenom. oder verwenden Sie den Domain-Registrar Ihrer Wahl.

  • Ein DNS * A Record *, der Ihre Domain auf die öffentliche IP-Adresse Ihres Servers verweist. Unter https://www.digitalocean.com/community/tutorials/an-einführung-zu-digitalocean-dns finden Sie Informationen zum Hinzufügen mit der DigitalOcean-Plattform. DNS-A-Einträge sind 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 "" erhalten möchten, muss diese Domäne auf Ihren Server aufgelöst werden, damit der Überprüfungsprozess funktioniert. Unser Setup verwendet "" und "++" als Domainnamen, für die beide ein gültiger DNS-Eintrag erforderlich ist.

Wenn Sie alle diese Voraussetzungen erfüllt haben, fahren Sie mit der Installation der Let’s Encrypt-Clientsoftware fort.

Schritt 1 - Installation des Certbot Let’s Encrypt Client

Um mit Let’s Encrypt ein SSL-Zertifikat zu erhalten, müssen Sie zuerst Certbot und https://httpd.apache.org/docs/2.4/mod/mod_ssl.html [+ mod_ssl +] installieren, ein Apache-Modul, das Unterstützung für bietet SSL v3 Verschlüsselung.

Das Paket + certbot + ist standardmäßig nicht über den Paketmanager verfügbar. Sie müssen das Repository EPEL aktivieren, um Certbot zu installieren.

Führen Sie den folgenden Befehl aus, um das CentOS 7 EPEL-Repository hinzuzufügen:

sudo yum install epel-release

Nachdem Sie nun Zugriff auf das Repository haben, installieren Sie alle erforderlichen Pakete:

sudo yum install certbot python2-certbot-apache mod_ssl

Während des Installationsvorgangs werden Sie gefragt, ob Sie einen GPG-Schlüssel importieren möchten. Dieser Schlüssel überprüft die Echtheit des Pakets, das Sie installieren. Um die Installation zu beenden, akzeptieren Sie den GPG-Schlüssel, indem Sie "+ y " eingeben und " ENTER +" drücken, wenn Sie dazu aufgefordert werden.

Wenn diese Dienste installiert sind, können Sie jetzt Certbot ausführen und Ihre Zertifikate abrufen.

Schritt 2 - Erhalt eines Zertifikats

Nach der Installation von Certbot können Sie damit ein SSL-Zertifikat für Ihre Domain anfordern.

Die Verwendung des "+ certbot +" Encrypt-Clients zum Generieren des SSL-Zertifikats für Apache automatisiert viele der Schritte in diesem Prozess. Der Client erhält und installiert automatisch ein neues SSL-Zertifikat, das für die von Ihnen als Parameter angegebenen Domänen gültig ist.

Um die interaktive Installation auszuführen und ein Zertifikat zu erhalten, das nur eine einzelne Domäne abdeckt, führen Sie den Befehl + certbot + mit folgenden Befehlen aus:

sudo certbot --apache -d

Dies führt "+ certbot " mit dem Plugin " - apache " aus und gibt die Domäne, für die das Zertifikat konfiguriert werden soll, mit dem Flag " -d +" an.

Wenn Sie ein einzelnes Zertifikat installieren möchten, das für mehrere Domänen oder Unterdomänen gültig ist, können Sie diese als zusätzliche Parameter an den Befehl übergeben und jede neue Domäne oder Unterdomäne mit dem Flag "+ -d +" kennzeichnen. Der erste Domänenname in der Liste der Parameter ist die * Basis * -Domäne, die von Let’s Encrypt zum Erstellen des Zertifikats verwendet wird. Übergeben Sie aus diesem Grund den Basisdomänennamen als ersten in der Liste, gefolgt von zusätzlichen Subdomänen oder Aliasnamen:

sudo certbot --apache -d  -d

Die Basisdomäne in diesem Beispiel ist "+ example.com +".

Das Dienstprogramm "+ certbot " kann Sie auch während des Zertifikatsanforderungsverfahrens zur Eingabe von Domäneninformationen auffordern. Um diese Funktionalität zu nutzen, rufen Sie " certbot +" ohne Domains auf:

sudo certbot --apache

Das Programm zeigt Ihnen eine schrittweise Anleitung zum Anpassen Ihrer Zertifikatoptionen. Sie werden aufgefordert, eine E-Mail-Adresse für die Wiederherstellung verlorener Schlüssel und Benachrichtigungen anzugeben, und anschließend aufgefordert, den Nutzungsbedingungen zuzustimmen. Wenn Sie Ihre Domains nicht in der Befehlszeile angegeben haben, werden Sie auch dazu aufgefordert. Wenn Ihre Virtual Host-Dateien die Domain, die sie bedienen, nicht explizit mithilfe der Direktive "+ ServerName " angeben, werden Sie aufgefordert, die Virtual Host-Datei auszuwählen. In den meisten Fällen funktioniert die Standarddatei " ssl.conf".

Sie können auch wählen, ob Sie den "+ http " - und den " https " - Zugriff aktivieren oder alle Anforderungen zwingen möchten, zu " https " umzuleiten. Für eine bessere Sicherheit wird empfohlen, die Option "+2: Umleiten +" zu wählen, wenn Sie keine besonderen Anforderungen haben, um unverschlüsselte Verbindungen zuzulassen. Wählen Sie Ihre Wahl und drücken Sie " ENTER".

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):

Wenn die Installation erfolgreich abgeschlossen wurde, wird eine Meldung ähnlich der folgenden angezeigt:

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 . 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"
- 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

Die generierten Zertifikatsdateien stehen in einem Unterverzeichnis zur Verfügung, das nach Ihrer Basisdomäne im Verzeichnis "+ / etc / letsencrypt / live +" benannt ist.

Nachdem Ihre Zertifikate heruntergeladen, installiert und geladen wurden, können Sie Ihren SSL-Zertifikatstatus überprüfen, um sicherzustellen, dass alles funktioniert.

Schritt 3 - Überprüfen Sie Ihren Zertifikatstatus

Zu diesem Zeitpunkt können Sie sicherstellen, dass Certbot Ihr SSL-Zertifikat ordnungsgemäß erstellt hat, indem Sie den SSL Server Test des Cloud-Sicherheitsunternehmens https://www.qualys.com/ [verwenden. Qualys].

Öffnen Sie den folgenden Link in Ihrem bevorzugten Webbrowser und ersetzen Sie "++" durch Ihre * base * -Domain:

https://www.ssllabs.com/ssltest/analyze.html?d=

Sie landen auf einer Seite, die sofort mit dem Testen der SSL-Verbindung zu Ihrem Server beginnt:

Sobald der Test gestartet wurde, kann es einige Minuten dauern, bis er abgeschlossen ist. Der Status des Tests wird in Ihrem Browser aktualisiert.

Nach Abschluss des Tests wird auf der Seite eine Bewertung angezeigt, die die Sicherheit und Qualität der Serverkonfiguration bewertet. Zum Zeitpunkt des Schreibens dieses Dokuments geben die Standardeinstellungen eine * A * -Bewertung:

Weitere Informationen dazu, wie SSL Labs diese Bewertungen ermittelt, finden Sie in der SSL Labs-Bewertungsveröffentlichung, in der die an der Bewertung vorgenommenen Aktualisierungen aufgeführt sind Regelung im Januar 2018.

Versuchen Sie, Ihre Website mit "+ https: // +" neu zu laden, und beachten Sie die Sicherheitsanzeige Ihres Browsers. Es wird nun angezeigt, dass die Site ordnungsgemäß gesichert ist, normalerweise mit einem grünen Schlosssymbol.

Nachdem Ihr SSL-Zertifikat aktiviert und überprüft wurde, müssen Sie im nächsten Schritt die automatische Verlängerung Ihres Zertifikats einrichten, damit Ihr Zertifikat gültig bleibt.

Schritt 4 - Automatische Verlängerung einrichten

"Zertifikate verschlüsseln" hat eine Gültigkeit von 90 Tagen. Es wird jedoch empfohlen, die Zertifikate alle 60 Tage zu erneuern, um eine Fehlerquote zu erzielen. Aus diesem Grund empfiehlt es sich, diesen Prozess zu automatisieren, um das Zertifikat regelmäßig zu überprüfen und zu erneuern.

Untersuchen wir zunächst den Befehl, mit dem Sie das Zertifikat erneuern. Der "+ certbot " Let´s Encrypt-Client verfügt über einen " renew " - Befehl, der die aktuell installierten Zertifikate automatisch überprüft und versucht, sie zu erneuern, wenn sie weniger als 30 Tage vor dem Ablaufdatum liegen. Mit der Option " - Trockenlauf " können Sie eine Simulation dieser Aufgabe ausführen, um zu testen, wie " Erneuern +" funktioniert:

sudo certbot renew --dry-run

Die Ausgabe sollte ungefähr so ​​aussehen:

OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for
http-01 challenge for
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-staging-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live//fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
 /etc/letsencrypt/live//fullchain.pem (success)
...

Wenn Sie ein gebündeltes Zertifikat mit mehreren Domänen erstellt haben, wird in der Ausgabe nur der Basisdomänenname angezeigt. Die Verlängerung gilt jedoch für alle in diesem Zertifikat enthaltenen Domänen.

Eine praktische Möglichkeit, um sicherzustellen, dass Ihre Zertifikate nicht veraltet sind, besteht darin, eine cron zu erstellen job, der den Befehl zur automatischen Erneuerung regelmäßig für Sie ausführt. Da bei der Erneuerung zunächst nach dem Ablaufdatum gesucht wird und die Erneuerung nur ausgeführt wird, wenn das Zertifikat weniger als 30 Tage vor dem Ablaufdatum liegt, ist es sicher, einen Cron-Job zu erstellen, der jede Woche oder sogar jeden Tag ausgeführt wird.

In der offiziellen Certbot-Dokumentation unter https://certbot.eff.org/lets-encrypt/centosrhel7-apache wird empfohlen, + cron + zweimal täglich auszuführen. Auf diese Weise wird sichergestellt, dass es nicht länger als einen halben Tag dauert, bis Certbot Ihr Zertifikat erneuert, falls Let’s Encrypt eine Zertifikatsperrung initiiert.

Bearbeiten Sie die + crontab +, um einen neuen Job zu erstellen, der die Erneuerung zweimal täglich ausführt. Um das + crontab + für den Benutzer * root * zu bearbeiten, führen Sie Folgendes aus:

sudo crontab -e

Ihr Texteditor öffnet das standardmäßige "+ crontab +", das zu diesem Zeitpunkt eine leere Textdatei ist. In diesem Tutorial wird der vi-Texteditor verwendet. Weitere Informationen zu diesem Texteditor und seinem Nachfolger vim finden Sie unter https://www.digitalocean.com/community/tutorials/installing-and-using-the-vim-text-editor-on-a-cloud-server # manage-documents Tutorial [Installieren und Verwenden des Vim-Texteditors auf einem Cloud-Server].

Aktivieren Sie den Einfügemodus durch Drücken von + i + und fügen Sie in der folgenden Zeile hinzu:

crontab0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Wenn Sie fertig sind, drücken Sie "+ ESC ", um den Einfügemodus zu verlassen, und dann ": wq " und " ENTER ", um die Datei zu speichern und zu beenden. Dadurch wird ein neuer Cron-Job erstellt, der jeden Tag um 12.00 Uhr und Mitternacht ausgeführt wird. Durch Hinzufügen eines zufälligen Elements zu Ihren Cron-Jobs wird sichergestellt, dass nicht alle stündlichen Jobs zur gleichen Minute ausgeführt werden, was zu einem Server-Spitzenwert führt. ` python -c 'importiere zufällig; Importzeit; time.sleep (random.random () * 3600) '+' wählt eine zufällige Minute innerhalb der Stunde für Ihre Erneuerungsaufgaben aus.

Weitere Informationen zum Erstellen und Planen von Cron-Jobs finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-on-a-vps [ Verwendung von Cron zur Automatisierung von Aufgaben in einem VPS] -Handbuch. Weitere Informationen zur Erneuerung finden Sie in der Certbot-Dokumentation.

Fazit

In diesem Handbuch haben Sie den Let’s Encrypt Certbot-Client installiert, SSL-Zertifikate für Ihre Domain heruntergeladen und die automatische Zertifikatserneuerung eingerichtet. Wenn Sie Fragen zur Verwendung von Certbot haben, lesen Sie die offizielle Certbot documentation. Wir empfehlen Ihnen außerdem, von Zeit zu Zeit im offiziellen Lets Encrypt-Blog nach wichtigen Updates zu suchen.