Sichere Website auf AWS mit Minimalaufwand, Teil 2 Let’s-Encrypt-Zertifikate für AWS Lightsail anfordern

Mit nur wenigen Mausklicks haben wir eine WordPress-Website auf AWS Lightsail bereitgestellt und mit einem öffentlichen Domain-Namen verknüpft. Nun 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 (Certificate Authority, CA) wie z. B. Let’s Encrypt. Dieser Anbieter rückt allerdings nur dann Zertifikate heraus, wenn der Nutzer nachweisen kann, dass er Besitzer der betreffenden Domain ist.

Certbot

Let’s Encrypt nutzt dazu das das https://ietf-wg-acme.github.io/acme/ ACME Protokoll. Das funktioniert am einfachsten, wenn man selbst Shell- bzw. SSH-Zugang zum Webserver hat, wie das bei Lightsail der Fall ist. Das Werkzeug 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 ist einfach zu benutzen, besitzt einen Expertenmodus, falls keine Autokonfiguration gewünscht ist, funktioniert auf vielen Betriebssystemen und ist bestens dokumentiert. Einzelheiten dazu finden sich auf der https://certbot.eff.org/ Certbot-Webseite.

Bevor man mit Certbot experimentiert, kann man in Lightsail aus Sicherheitsgründen sehr einfach im Menü „Snapshots“ einen manuellen oder automatisierten Snapshot der aktuellen Instanz anlegen. Anschließend stellt man in der Lightsail-Console mit einem Klick auf „Connect“ eine SSH-Verbindung zur Console des Lightsail-Servers her.

Aus Sicherheitsgründen ist es sinnvoll, den aktuellen Zustand unserer Instanz in einem Snapshot festzuhalten. (Bild: Drilling / AWS)

Nach einem Update des Unterbaues mit …

sudo apt-get update

Ein grundlegendes Update des Bitnami-Unterbaus ist ebenfalls angeraten. (Bild: Drilling / AWS)

… installiert man 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 aktualisiert man noch einmal die Paketquellen mit …

sudo apt-get update -y

…, um schlussendlich 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 der Einfachheit halber 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

Beim Anforern des Zertifikats wird die IP mitgeloggt. (Bild: Drilling / AWS)

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

Nun muss man gegenüber Let´s Encrypt nachweisen, dass man Besitzer der angegebenen Domain ist. 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 wechselt man zum Abschnitt „Netzwerk“ und klickt dann auf die drei Punkte rechts neben der angezeigten DNS_Zone, um zum Menü „Verwalten“ zu gelangen. Dort klickt man wie im ersten Teil des Beitrags beim A-Record schon erläutert auf „Datensatz hinzufügen“. Hier wählen wir diesmal die Option „TXT-Datensatz“. In Summe bedarf es zweier Datensätze mit dem (gleichen) Schlüssel „_acme-challenge.<domain>.

Aber Achtung: Während es bei Route 53 DNS nicht möglich ist, zwei TXT_Datensätze mit gleichen Schlüssel und verschiedenen Values  anzulegen, geht dies bei Lightsail DNS durchaus. Man legt also einfach zwei TXT-Records mir dem Schlüssel “_acme-challenge” mit den beiden in der Lightsail-Console angezeigten Werten an. Demzufolge  muss auch 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.

Wir fügen die DNS-Einträge direkt in Lightsail als txt-Datensatz hinzu. ( Bild: Drilling / AWS )

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 kann man die korrekte Weitergabe z. B. mit dem Online-Tool-Sammlung https://mxtoolbox.com/ MXToolbox. Das Tool zum Überprüfen von TXT-Einträgen findet sich unter konkret unter https://mxtoolbox.com/TXTLookup.aspx.

Hier weiterlesen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.