BlogSichere Website auf AWS mit Minimalaufwand (TEIL 2)

Sichere Website auf AWS mit Minimalaufwand (TEIL 2)

Website auf AWS Lightsail mit Let’s Encrypt-Zertifikaten absichern – Teil 2 Zertifikate anfordern

Nachdem wir mit wenigen Mausklicks eine WordPress-Website auf AWS Lightsail bereitgestellt und mit einem öffentlichen Domain-Namen verknüpft haben, können wir im zweiten Teil dieses Workshops die SSL-Zertifikate von Let’s Encrypt anfordern und anschließend die SSL-Umleitung für Apache und in WordPress einrichten.

Um HTTPS für eine Webseite aktivieren zu können, braucht man bekanntlich ein Zertifikat von einer Zertifizierungsstelle (CA), wie z. B. Let’s Encrypt eine ist. Let’s Encrypt rückt allerdings nur dann Zertifikate raus, wenn der Nutzer nachweisen kann, dass er Besitzer der betreffenden Domain ist.

Certbot

Let’s Encrypt nutzt dazu das https://ietf-wg-acme.github.io/acme/ ACME Protokoll. Das funktioniert am einfachstem, wenn du selbst einen Shell- bzw. SSH-Zugang zum Webserver hast, wie das bei Lightsail der Fall ist. Das Tool der Wahl zur Benutzung des ACME-Protokolls ist https://certbot.eff.org/ Certbot ACME. Das Tool kann Zertifikate automatisch ohne Ausfallzeit erstellen und installieren. Es besitzt zudem auch einen Expertenmodus, falls keine Autokonfiguration gewünscht ist. Er ist einfach zu benutzen, funktioniert auf vielen Betriebssystemen und ist bestens dokumentiert. Einzelheiten dazu findest du auf der https://certbot.eff.org/ Certbot-Webseite. Bevor du mit Certbot experimentierst, kannst du in Lightsail aus Sicherheitsgründen sehr einfach im Menü „Snapshots“ einen manuellen oder automatisierten Snapshot der aktuellen Instance anlegen.

Anschließend stellst du in der Lightsail-Console mit einem Klick auf „Connect“ eine SSH-Verbindung zur Console des Lightsail-Servers her. Nach einem Update des Unterbaues mit …

sudo apt-get update

installierst du zunächst das Paket „Software-Properties“, …

sudo apt-get install software-properties-common

und ergänzt danach das Repository (PPA) für Certbot mit

sudo apt-add-repository ppa:certbot/certbot -y

Dann aktualisiere noch einmal die Paketquellen mit

sudo apt-get update –y

, um dann Certbot installieren zu können

sudo apt-get install certbot -y

Jetzt fordern wir mit Certbot ein Platzhalterzertifikat an, mit dem wir ein einzelnes Zertifikat für eine Domäne und deren Unterdomänen verwenden können. Beispielsweise funktioniert ein einzelnes Platzhalterzertifikat für die Top-Level-Domain „example.com“ sowie für die Subdomains „blog.example.com“ und „stuff.example.com“. Dazu legen wir zunächst einfachheitshalber zwei Umgebungsvariablen an:

DOMAIN=<example.com>

WILDCARD=*.$DOMAIN

In unserem Beispiel wäre das:

DOMAIN=drilling-aws.de

WILDCARD=*.$DOMAIN

Dann fordern wir das Zertifikat mit folgendem Befehl an

sudo certbot -d $DOMAIN -d $WILDCARD –manual –preferred-challenges dns certonly

Dabei ist eine E-Mail-Adresse anzugeben, welche für das etwaige Erneuern von Zertifikaten und für Sicherheits-Benachrichtigungen benötigt wird. Achte auf die Warnung, dass die IP-Adresse protokolliert wird.

Nun musst du gegenüber Let´s Encrypt nachweisen, dass du Besitzer der angegebenen Domain bist. Dies erfolgt durch Anlegen der zwei nacheinander in der Console angezeigten TXT-Records (je einmal ENTER drücken) mit dem Schlüssel „_acme-challenge“ im Lightsail-DNS. Das Hinzufügen der DNS-Einträge kann direkt in der Lightsail-Console erfolgen. Dazu wechsele zum Abschnitt „Netzwerk“ und klicke dann auf die drei Punkte rechts neben der angezeigten DNS_Zone, um zum Menü „Verwalten“ zu gelangen. Dort klickst du wie im ersten Teil des Beitrags beim A-Record schon erläutert auf „Datensatz hinzufügen“. Hier wählst du diesmal die Option „TXT-Datensatz“.

In Summe bedarf es zwei Datensätze mit dem Schlüssel „_acme-challenge.<domaine>. Aber Achtung: zwei Values auf separater Zeile für den gleichen Schlüssel sind durchaus erlaubt, während es nicht möglich ist, zwei Records mit dem gleichen Schlüssel anzulegen. Dabei muss das Console-Fenster der Instance geöffnet bleiben.

Die Weitergabe von DNS-Einträgen kann übrigens eine Weile dauern, abhängig vom betreffenden DNS-Anbieter und dessen konfigurierter TTL (Time to Live) für DNS-Einträge.

Bei Lightsail-DNS, bzw. Route 53 geht das allerdings sehr schnell. Es ist sehr wichtig, den Schritt fehlerfrei auszuführen und sich zu überzeugen, dass die TXT-Datensätze korrekt weitergegeben wurden, bevor man den Prozess in der Certbot-Zertifikatanforderung abschließt. Prüfen kannst du die korrekte Weitergabe z. B. mit der Online-Tool-Sammlung https://mxtoolbox.com/ MXToolbox. Das Tool zum Überprüfen von TXT-Einträgen findest du konkret unter https://mxtoolbox.com/TXTLookup.aspx. Hier trägst du dann

_acme-challenge.<domain>

ein.

War die Prüfung erfolgreich bekommst du auch in der Lightsail-Console eine positive Quittung.

Certbot speichert die SSL-Zertifikats-, Ketten- und Schlüsseldateien in einem bestimmten Verzeichnis /etc/letsencrypt/live/$DOMAIN/privkey.pem auf der WordPress-Instanz. Am besten notierst du dir in der Ausgabe auch gleich das Ablaufdatum. Dieses wird benötigt, um das Zertifikat bis zu diesem Datum zu erneuern.

Sobald die Zertifikate vorliegen musst du noch Links zu den Let’s Encrypt SSL-Zertifikatdateien im Apache-Verzeichnis der WordPress-Instanz anlegen. Zum Erstellen der Links musst du in der SSH-Sitzung von Lightsail zunächst die zugrunde liegenden Dienste stoppen: Bei Bitnami klappt das wie folgt:

sudo /opt/bitnami/ctlscript.sh stop

Jetzt  benenne die vorhandenen (Default)-Zertifikatdateien sicherheitshalber um:

sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.alt

sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.alt

sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.alt

Dann erzeuge die benötigten Symlinks mit

sudo ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache2/conf/server.key

sudo ln -s /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/server.crt

Danach kannst du die oben gestoppten Services wieder starten.

sudo /opt/bitnami/ctlscript.sh start

SSL-Zertifikate in WordPress integrieren

Die Host-seitigen Anpassungen sind damit erledigt. Jetzt musst du nur noch die auf dem Webserver betriebene Anwendung – im Beispiel WordPress – für die Verwendung der neuen Zertifikate konfigurieren. Hierzu installiere z. B. das „Really Simple SSL-Plugin“ in WordPress und integriere dann das SSL-Zertifikat. Der Vorteil des Plugins besteht darin, dass Really Simple SSL auch gleich die benötigte Umleitung von HTTP zu HTTPS einrichtet. Damit ist sichergestellt, dass Website-Besucher immer auf HTTPS-Verbindung geführt werden.

Vor dem Installieren des WordPress-Plugins muss allerdings die Datei wp-config.php beschreibbar gemacht werden, denn das Really Simple SSL-Plugin schreibt darin, um die Zertifikate zu konfigurieren.

sudo chmod 666 /opt/bitnami/apps/wordpress/htdocs/wp-config.php

Dann kann das Really Simple SSL-Plugins installiert werden

Danach musst du nur noch auf den Button „Auf geht´s, aktiviere SSL“ klicken!

Dies wird bestätig mit „SSL aktiviert“.

Dabei wirst du zwangsläufig einmal zur Neuanmeldung gezwungen. Die WordPress-Instanz auf Lightsail ist damit für die Verwendung der SSL-Verschlüsselung konfiguriert. Außerdem ist sie jetzt so konfiguriert, dass Verbindungen automatisch von HTTP zu HTTPS umgeleitet werden.

Bewertungen

Kundenstimme
Wolfgang N.
ThyssenKrupp Nirosta
star-participantstar-participantstar-participantstar-participantstar-participant
Eine gute Adresse für das Erlernen scheinbar schwieriger und trockener Themen, die hier gut aufbereitet werden.
Kundenstimme
Torsten B.
Westdeutscher Rundfunk WDR
star-participantstar-participantstar-participantstar-participantstar-participant
Das Seminar hat nicht nur Spaß gemacht, sondern auch wirklich 'ne Menge gebracht :-)
Kundenstimme
Dimitri B.
HSBC Trinkaus
star-participantstar-participantstar-participantstar-participantstar-participant
Sehr informativ und in der Praxis wiederverwendbar.
Kundenstimme
Philipp M.
Wacom Europe GmbH
star-participantstar-participantstar-participantstar-participantstar-participant
Sehr gute Organisation, guter Trainer - alles super!