View a markdown version of this page

Aktiviere HTTPS auf deiner Nginx-Instanz mit Let's Encrypt und Certbot - Amazon Lightsail

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktiviere HTTPS auf deiner Nginx-Instanz mit Let's Encrypt und Certbot

Amazon Lightsail macht es einfach, Ihre Websites und Anwendungen SSL/TLS mithilfe von Lightsail-Load Balancern zu sichern. Die Verwendung eines Lightsail-Loadbalancers ist jedoch im Allgemeinen möglicherweise nicht die richtige Wahl. Möglicherweise benötigt Ihre Website nicht die Skalierbarkeit oder Fehlertoleranz, die Load Balancer bieten, oder vielleicht möchten Sie die Kosten optimieren.

Im letzteren Fall können Sie Let's Encrypt verwenden, um ein kostenloses SSL-Zertifikat zu erhalten. Wenn dies der Fall ist, ist das kein Problem. Sie können diese Zertifikate in Lightsail-Instances integrieren. Dieses Tutorial zeigt Ihnen, wie Sie mit Certbot ein Let's Encrypt-Wildcard-Zertifikat anfordern und es in Ihre Nginx-Instanz integrieren.

Inhalt

Schritt 1: Erfüllen der Voraussetzungen

Erfüllen Sie die folgenden Voraussetzungen, falls Sie dies noch nicht getan haben:

Schritt 2: Installieren Sie Certbot auf Ihrer Lightsail-Instanz

Certbot ist ein Client, mit dem ein Zertifikat von Let's Encrypt angefordert und auf einem Webserver bereitgestellt wird. Let's Encrypt verwendet das ACME-Protokoll, um Zertifikate auszustellen, und Certbot ist ein ACME-enabled Client, der mit Let's Encrypt interagiert.

Um Certbot auf Ihrer Lightsail-Instanz zu installieren
  1. Melden Sie sich bei der Lightsail-Konsole an.

  2. Wählen Sie auf der Lightsail-Startseite auf der Registerkarte Instances das SSH-Schnellverbindungssymbol für die Instance aus, zu der Sie eine Verbindung herstellen möchten.

    SSH-Schnellverbindung auf der Lightsail-Startseite.
  3. Nachdem Ihre browserbasierte Lightsail-SSH-Sitzung verbunden ist, geben Sie den folgenden Befehl ein, um die Pakete auf Ihrer Instanz zu aktualisieren:

    sudo apt-get update
  4. Geben Sie den folgenden Befehl ein, um das Software-Eigenschaftenpaket zu installieren. Die Entwickler von Certbot verwenden ein Personal Package Archive (PPA), um Certbot zu verteilen. Das Software-Eigenschaftenpaket macht es effizienter, mit PPAs zu arbeiten.

    sudo apt-get install software-properties-common -y
  5. Geben Sie den folgenden Befehl ein, um apt zu aktualisieren und das neue Repository aufzunehmen:

    sudo apt-get update -y
  6. Geben Sie den folgenden Befehl ein, um Certbot zu installieren.

    sudo apt-get install certbot -y

    Certbot ist jetzt auf Ihrer Lightsail-Instanz installiert.

Schritt 3: Anfordern eines Let's Encrypt SSL Wildcard-Zertifikats

Beginnen Sie mit der Anforderung eines Zertifikats von Let's Encrypt. Fordern Sie mit Certbot ein Wildcard-Zertifikat an, mit dem Sie ein einzelnes Zertifikat für eine Domäne und ihre Unterdomänen verwenden können. Ein einzelnes Wildcard-Zertifikat funktioniert beispielsweise für die Top-Level-Domäne example.com und die Unterdomänen blog.example.com und stuff.example.com.

Um ein Let's Encrypt SSL Wildcard-Zertifikat anzufordern
  1. Geben Sie in demselben browserbasierten SSH-Terminalfenster, das im vorherigen Schritt dieses Tutorials verwendet wurde, die folgenden Befehle ein, um eine Umgebungsvariable für Ihre Domain festzulegen. Achten Sie darauf, domain durch Ihren registrierten Domänennamen zu ersetzen.

    DOMAIN=domain WILDCARD=*.$DOMAIN

    Beispiel:

    DOMAIN=example.com WILDCARD=*.$DOMAIN
  2. Geben Sie den folgenden Befehl ein, um zu bestätigen, dass die Variablen die richtigen Werte zurückgeben:

    echo $DOMAIN && echo $WILDCARD

    Das Ergebnis sollte in etwa wie folgt aussehen:

    Bestätigen Sie die Umgebungsvariablen der Domäne.
  3. Geben Sie den folgenden Befehl ein, um Certbot im interaktiven Modus zu starten. Dieser Befehl weist Certbot an, eine manuelle Autorisierungsmethode mit DNS-Herausforderungen zu verwenden, um den Domänenbesitz zu überprüfen. Es fordert ein Wildcard-Zertifikat für Ihre Top-Level-Domäne sowie deren Unterdomänen an.

    sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  4. Geben Sie Ihre E-Mail-Adresse ein, wenn Sie dazu aufgefordert werden, da sie für Verlängerungen und Sicherheitshinweise verwendet wird.

  5. Lesen Sie die Nutzungsbedingungen von Let's Encrypt. Wenn Sie damit fertig sind, drücken Sie A, wenn Sie zustimmen. Wenn Sie nicht einverstanden sind, können Sie kein Let's Encrypt-Zertifikat erhalten.

  6. Reagieren Sie entsprechend auf die Aufforderung, Ihre E-Mail-Adresse weiterzugeben, und auf die Warnung, dass Ihre IP-Adresse protokolliert wird.

  7. Let's Encrypt fordert Sie nun auf, zu verifizieren, dass Sie Eigentümer der angegebenen Domain sind. Sie tun dies, indem Sie TXT-Einträge zu den DNS-Datensätzen für Ihre Domäne hinzufügen. Es wird ein Satz von TXT-Datensatzwerten bereitgestellt, wie im folgenden Beispiel gezeigt:

    Anmerkung

    Let's Encrypt kann einen einzelnen oder mehrere TXT-Datensätze bereitstellen, die Sie für die Verifizierung verwenden müssen. In diesem Beispiel wurden zwei TXT-Datensätze für die Verifizierung bereitgestellt.

    TXT-Datensätze für Zertifikate von Let's Encrypt.

Schritt 4: Hinzufügen von TXT-Datensätzen zur DNS-Zone Ihrer Domain

Wenn Sie einen TXT-Eintrag zur DNS-Zone Ihrer Domäne hinzufügen, wird überprüft, ob Sie die Domäne besitzen. Zu Demonstrationszwecken verwenden wir die Lightsail-DNS-Zone. Die Schritte können jedoch für andere DNS-Zonen ähnlich sein, die typischerweise von Domänen-Registraren gehostet werden.

Anmerkung

Weitere Informationen zum Erstellen einer Lightsail-DNS-Zone für Ihre Domain finden Sie unter Erstellen einer DNS-Zone zur Verwaltung der DNS-Einträge Ihrer Domain in Lightsail.

Um TXT-Einträge zur DNS-Zone Ihrer Domain in Lightsail hinzuzufügen
  1. Wählen Sie im linken Navigationsbereich Domains & DNS aus.

  2. Wählen Sie im Abschnitt DNS zones (DNS-Zonen) auf der Seite die DNS-Zone für die Domäne aus, die Sie in der Certbot-Zertifikatsanforderung angegeben haben.

  3. Wählen Sie im DNS-Zoneneditor die Registerkarte DNS records (DNS-Datensätze).

  4. Wählen Sie Add record (Datensatz hinzufügen).

  5. Wählen Sie im Dropdown-Menü Record type (Datensatztyp) die Option TXT record (TXT-Datensatz).

  6. Geben Sie die in der Let's Encrypt-Zertifikatsanforderung angegebenen Werte in die Felder Record name (Datensatzname) und Responds with (Antwortet mit) ein.

    Anmerkung

    Die Lightsail-Konsole füllt den oberen Teil Ihrer Domain vorab aus. Wenn Sie beispielsweise das _acme-challenge.example.com-Subdomain hinzufügen möchten, dann müssen Sie im Textfeld nur _acme-challenge eingeben und Lightsail fügt das .example.com-Teil für Sie hinzu, wenn Sie den Datensatz speichern.

  7. Wählen Sie Speichern.

  8. Wiederholen Sie die Schritte 4 bis 7, um den zweiten Satz von TXT-Einträgen hinzuzufügen, der durch die Let's Encrypt-Zertifikatsanforderung spezifiziert wurde.

  9. Lassen Sie das Browserfenster der Lightsail-Konsole geöffnet — Sie werden später in diesem Tutorial darauf zurückkommen. Fahren Sie mit dem nächsten Abschnitt dieses Tutorials fort.

Schritt 5: Bestätigen, dass die TXT-Datensätze weitergegeben wurden

Verwenden Sie das MxToolbox Tool, um zu überprüfen, ob die TXT-Einträge an das DNS des Internets weitergegeben wurden. Die Verbreitung von DNS-Einträgen kann je nach Ihrem DNS-Hosting-Provider und der konfigurierten Lebenszeit (TTL - Time to Live) für Ihre DNS-Einträge eine Weile dauern. Es ist wichtig, dass Sie diesen Schritt abschließen und bestätigen, dass sich Ihre TXT-Einträge verbreitet haben, bevor Sie Ihre Certbot-Zertifikatsanforderung fortsetzen. Andernfalls schlägt Ihre Zertifikatsanforderung fehl.

So bestätigen Sie, dass sich die TXT-Einträge über das DNS des Internets verbreitet haben
  1. Öffnen Sie ein neues Browserfenster und gehen Sie zu https://mxtoolbox.com/TXTLookup.aspx.

  2. Geben Sie den folgenden Text in das Textfeld ein. Stellen Sie sicher, dass Sie domain durch Ihre Domäne ersetzen.

    _acme-challenge.domain

    Beispiel:

    _acme-challenge.example.com
    MxToolbox Suche nach TXT-Einträgen.
  3. Wählen Sie TXT Lookup (TXT-Suche), um die Prüfung auszuführen.

  4. Eine der folgenden Antworten wird eintreten:

    • Wenn Ihre TXT-Datensätze an das DNS des Internets weitergegeben wurden, sehen Sie eine ähnliche Antwort wie im folgenden Screenshot. Schließen Sie das Browserfenster und fahren Sie mit dem nächsten Abschnitt dieses Tutorials fort.

      Bestätigen, dass TXT-Datensätze weitergegeben wurden.
    • Wenn Ihre TXT-Einträge nicht über das DNS des Internets verbreitet wurden, sehen Sie eine Antwort wie DNS Record not found (DNS-Datensatz nicht gefunden). Vergewissern Sie sich, dass Sie die richtigen DNS-Einträge zur DNS-Zone Ihrer Domäne hinzugefügt haben. Wenn Sie die richtigen Datensätze hinzugefügt haben, warten Sie noch eine Weile, bis sich die DNS-Einträge Ihrer Domäne verbreiten, und führen Sie die TXT-Suche erneut aus.

Schritt 6: Abschließen der Let's Encrypt SSL-Zertifikatsanforderung

Kehren Sie zur browserbasierten Lightsail-SSH-Sitzung für Ihre Instanz zurück und schließen Sie die Let's Encrypt-Zertifikatsanforderung ab. Certbot speichert Ihr SSL-Zertifikat, Ihre Kette und Ihre Schlüsseldateien in einem bestimmten Verzeichnis auf Ihrer Instanz.

So schließen Sie die Let's Encrypt SSL-Zertifikatsanforderung ab
  1. Drücken Sie in der browserbasierten Lightsail-SSH-Sitzung für Ihre Instance die Eingabetaste, um mit Ihrer Let's Encrypt SSL-Zertifikatsanfrage fortzufahren. Bei Erfolg erscheint eine Antwort ähnlich der im folgenden Screenshot:

    Erfolgreiche Let's Encrypt-Zertifikatsanfrage.

    Die Nachricht bestätigt, dass Ihre Zertifikats-, Ketten- und Schlüsseldateien im Verzeichnis /etc/letsencrypt/live/domain/ gespeichert sind. Stellen Sie sicher, dass Sie domain durch Ihre Domäne ersetzen, wie z. B. /etc/letsencrypt/live/example.com/.

  2. Notieren Sie sich das in der Nachricht angegebene Ablaufdatum. Sie verwenden es, um Ihr Zertifikat bis zu diesem Datum zu verlängern.

    Verlängerungsdatum des Let's Encrypt-Zertifikats.

Schritt 7: Aktualisieren Sie die SSL-Konfiguration in Nginx und leiten Sie den Datenverkehr von HTTP auf HTTPS um

Um die SSL-Konfiguration in der default.conf von Nginx zu aktualisieren
  1. Geben Sie in der SSH-Sitzung für Ihre Nginx-Instanz den folgenden Befehl ein, um die zugrunde liegenden Dienste zu beenden:

    sudo systemctl stop nginx sudo systemctl stop mariadb sudo systemctl stop php8.2-fpm

    Es wird eine Antwort ähnlich der folgenden angezeigt:

    Die Dienste der Nginx-Instanz wurden gestoppt.
  2. Geben Sie den folgenden Befehl ein, um eine Umgebungsvariable für Ihre Domäne zu setzen. Sie können die Befehle effizienter kopieren und einfügen, um Ihre Zertifikatdateien zu verknüpfen. Achten Sie darauf, domain durch Ihre registrierte Domäne zu ersetzen.

    DOMAIN=domain

    Beispiel:

    DOMAIN=example.com
  3. Geben Sie den folgenden Befehl ein, um zu bestätigen, dass die Variablen die richtigen Werte zurückgeben:

    echo $DOMAIN

    Das Ergebnis sollte in etwa wie folgt aussehen:

    Bestätigen Sie die Umgebungsvariable der Domäne.
  4. Führen Sie den folgenden Befehl aus, um die SSL-Konfiguration zu ändern:

    Anmerkung

    Wenn Sie Ihr browserbasiertes SSH-Terminalfenster seit dem Setzen der DOMAIN Variablen in Schritt 3 geschlossen haben, führen Sie es DOMAIN=example.com erneut aus und example.com ersetzen Sie es durch Ihre Domain.

    sudo sed \ -i -e "s|ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem|ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem|g" \ -i -e "s|ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key|ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem|g" \ /etc/nginx/conf.d/default.conf
  5. Führen Sie nach dem Überschreiben der default.conf Datei die folgenden Befehle aus, um die Konfiguration zu überprüfen und Nginx neu zu starten

    sudo nginx -t sudo systemctl restart nginx sudo systemctl restart mariadb sudo systemctl restart php8.2-fpm

    Das Ergebnis sollte in etwa wie folgt aussehen:

    Die Nginx-Instanzdienste wurden gestartet.

    Ihre Nginx-Instanz ist jetzt für die Verwendung von SSL-Verschlüsselung konfiguriert und der Datenverkehr wird von HTTP zu HTTPS umgeleitet

Schritt 8: Erneuern Sie die Let's Encrypt-Zertifikate alle 90 Tage

Die Zertifikate von Let's Encrypt sind 90 Tage lang gültig. Die Zertifikate können 30 Tage bevor sie ablaufen erneuert werden. Um das Let's Encrypt-Zertifikat zu erneuern, wiederholen Sie Schritt 3: Beantragen Sie ein Let's Encrypt SSL-Platzhalterzertifikat.