So sichern Sie Ihre Rancher-Webanwendung mit Let’s Encrypt unter Ubuntu 16.04

Einführung

Der Schutz von Webanwendungen mit TLS/SSL wurde früher nur für Anwendungen für erforderlich gehalten, die sensible Informationen verarbeiten, da der Erhalt eines offiziellen Zertifikats mit Kosten verbunden war und zusätzliche Einstellungen erforderte. Mit https://letsencrypt.org [Let´s Encrypt] können wir offizielle Zertifikate auf automatisierte Weise kostenlos erstellen. Dies bedeutet, dass wir diese Sicherheitsstufe zu jeder Website hinzufügen können, ohne Kompromisse eingehen zu müssen.

http://rancher.com [Rancher] verwaltet Docker-Container auf intuitive Weise mit einem benutzerfreundlichen Dashboard. Rancher hat einen catalog of popular applications, den wir sofort bereitstellen können, einschließlich eines Let’s Encrypt-Dienstes, der Zertifikate generieren kann und der sich auch darum kümmert der Erneuerung, wenn nötig. Einmal erstellt, werden die Zertifikate in Rancher gespeichert und können problemlos verwendet werden.

Der Prozess zum Einrichten von Let’s Encrypt in Rancher besteht aus drei Hauptschritten: Wir stellen den Let’s Encrypt-Dienst bereit, wenden das generierte Zertifikat auf den Load Balancer an und richten die HTTP-HTTPS-Umleitung ein. Dieses Tutorial führt Sie durch den gesamten Prozess.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Ein 1 GB Ubuntu 16.04-Server mit installiertem Rancher. Um dies zu konfigurieren, folgen Sie dem Tutorial https://www.digitalocean.com/community/tutorials/how-to-manage-multi-node-deployments-with-rancher-and-docker-machine-on-ubuntu-16-04 [Verwalten von Multi-Node-Bereitstellungen mit Rancher und Docker Machine unter Ubuntu 16.04]. In diesem Lernprogramm erstellen Sie zusätzliche Server, die als Hosts für Ihre Docker-Container fungieren.

  • Eine mit Rancher bereitgestellte Anwendung, die den integrierten Load Balancer-Dienst von Rancher verwendet. Sie können diesem Tutorial mit jeder Anwendung folgen, einschließlich der im Rancher-Katalog enthaltenen. Sie können jedoch auch unser Handbuch zu https://www.digitalocean.com/community/tutorials/how-to-deploy-a-node- lesen. js-and-mongodb-application-with-rancher-on-ubuntu-16-04 [Bereitstellen einer Node.js- und MongoDB-Anwendung mit Rancher unter Ubuntu 16.04], um loszulegen. Stellen Sie unabhängig von der gewählten Route sicher, dass Ihre Konfiguration den integrierten Load Balancer-Dienst von Rancher verwendet, um Anforderungen an die Anwendungscontainer weiterzuleiten.

  • Ein vollständig qualifizierter Domänenname (FQDN) mit einem * A * -Datensatz für "+ your_domain ", der auf die öffentliche IP-Adresse Ihres Hosts verweist, auf dem der Rancher Load Balancer-Dienst ausgeführt wird. Dies ist erforderlich, da Let’s Encrypt überprüft, ob Sie die Domäne besitzen, für die ein Zertifikat ausgestellt wird. Sie können dem Tutorial https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean[Einrichten eines Hostnamens mit DigitalOcean] folgen, um dies zu konfigurieren Aufzeichnung. Stellen Sie sicher, dass Sie Ihre implementierte Anwendung unter ` http: // +` anzeigen können, bevor Sie mit diesem Lernprogramm beginnen.

[[step-1---deploying-the-let’s-encrypt-service]] === Schritt 1 - Bereitstellen des Let’s Encrypt-Dienstes

Wir werden den Let’s Encrypt-Dienst als Docker-Container bereitstellen, der auf einem unserer Rancher-Hosts gehostet wird. Der Vorgang besteht darin, den Let’s Encrypt-Dienst aus dem Rancher-Katalog auszuwählen und die erforderlichen Informationen einzugeben. Sobald Sie diesen Schritt abgeschlossen haben, steht Ihnen in Rancher ein Zertifikat zur Verfügung. Das Beste ist, dass der Dienst das Zertifikat vor dem Ablauf automatisch erneuert, ohne dass Sie weitere Maßnahmen ergreifen müssen.

Um zu starten, rufen Sie den * Rancher-Katalog * auf, indem Sie oben in der Rancher-Benutzeroberfläche auf das Menü * Katalog * klicken. Suchen Sie dann nach dem * Let’s Encrypt * -Dienst. Wenn Sie es gefunden haben, klicken Sie auf die Schaltfläche * Details anzeigen * und führen Sie die folgenden Schritte aus, um den Dienst zu konfigurieren:

  1. Wählen Sie die neueste Vorlagenversion. In diesem Tutorial wird Version * 0.4.0 * verwendet.

  2. Geben Sie dem neuen Anwendungsstapel einen eindeutigen Namen. Wir nennen es in diesem Tutorial * Zertifikate *, aber jeder Name wird funktionieren.

  3. Wählen Sie nach dem Lesen der Informationen die Option * Ja * für das Feld * Ich stimme zu, dass die Nutzungsbedingungen verschlüsselt werden *, wenn Sie mit den Bedingungen einverstanden sind.

  4. Wählen Sie die * Production * -Version der Let’s Encrypt-API aus.

  5. Geben Sie Ihre gültige E-Mail-Adresse in das Feld * Ihre E-Mail-Adresse * ein.

  6. Geben Sie für * Certificate Name * den Namen des Zertifikats ein, damit Sie es auf der Rancher-Benutzeroberfläche leicht identifizieren können. Sie können dafür Ihren Domainnamen verwenden.

  7. Geben Sie für * Domain Names * den Domainnamen ein, den Sie schützen möchten. Wenn Sie mehrere Domänen schützen möchten, geben Sie jede Domäne durch Kommas getrennt ein.

  8. Wählen Sie für den * Algorithmus für öffentliche Schlüssel * den Standardalgorithmus * RSA-2048 * aus, der in Webanwendungen am häufigsten verwendet wird, oder wählen Sie einen Algorithmus, der Ihren Anforderungen entspricht.

  9. Wählen Sie für * Erneuerungszeit des Tages * die Uhrzeit in UTC aus, zu der Sie das Zertifikat erneuern möchten. Der Standardwert * 12 * funktioniert einwandfrei, es sei denn, Sie haben bestimmte Einschränkungen.

  10. Wählen Sie für * Domain Validation Method * * HTTP * für dieses Lernprogramm aus. Es gibt andere Methoden, die Sie auswählen können, um mit dem DNS-Anbieter zusammenzuarbeiten, den Sie für Ihre Domain verwenden. DigitalOcean ist in der Liste enthalten, zusammen mit Cloudflare, DNSimple, Dyn, Gandi, Ovh, Route53 und Vultr. Die Option * HTTP * funktioniert unabhängig vom Anbieter und wird in diesem Lernprogramm verwendet.

  11. Die restlichen Felder beziehen sich auf bestimmte DNS-Anbieter. Da Sie die * HTTP * -Methode gewählt haben, können Sie diese leer lassen.

  12. Deaktivieren Sie anschließend das Kontrollkästchen * Dienst nach dem Erstellen starten *. Wir werden den Service starten, nachdem wir einige zusätzliche Konfigurationsänderungen vorgenommen haben.

  13. Klicken Sie abschließend unten auf der Seite auf die Schaltfläche * Starten *, um den Dienst zu starten und auf die Bereitstellung zu warten.

Als nächstes müssen wir den Load Balancer-Service von Racher anweisen, Anforderungen für "+ /. Well-known / acme-challenge +" an unseren neuen * Certificate * -Dienst weiterzuleiten. Andernfalls kann Let’s Encrypt nicht bestätigen, dass wir der Eigentümer der Domain sind. Befolgen Sie diese Schritte, um den Vorgang abzuschließen:

  1. Suchen Sie Ihren Load Balancer-Service in Rancher und klicken Sie auf die Schaltfläche * Upgrade / Edit *.

  2. Fügen Sie eine neue * Serviceregel * hinzu.

  3. Für die neue Regel:

  4. Stellen Sie sicher, dass * Access * auf * Public * eingestellt ist.

  5. Stellen Sie sicher, dass das * Protokoll * auf * HTTP * eingestellt ist.

  6. Stellen Sie sicher, dass * Port * auf + 80 + eingestellt ist.

  7. Stellen Sie den * Pfad * auf "+ /. Well-known / acme-challenge".

  8. Setzen Sie * Target * auf den * Certificate * -Dienst.

  9. Drücken Sie für diesen neuen Dienst auf den Aufwärtspfeil, um sicherzustellen, dass es sich um den ersten Dienst in der Liste handelt.

  10. Drücken Sie am unteren Bildschirmrand auf * Bearbeiten *, um die Konfiguration zu speichern.

Starten Sie mit der neuen Regel den Let’s Encrypt-Dienst:

  1. Suchen Sie Ihren * Certificate * -Stack, indem Sie das * Stacks * -Menü oben in der Benutzeroberfläche auswählen.

  2. Wählen Sie den Stapel * Zertifikate * aus, um den Dienst * letsencrypt * anzuzeigen.

  3. Drücken Sie die Taste * Start *, um den Dienst zu starten.

Zu diesem Zeitpunkt sollte der Let’s Encrypt-Dienst ausgeführt werden, und ein Zertifikat wird erstellt. Der Vorgang kann zwischen 5 und 15 Minuten dauern. Wählen Sie das Menü * Infrastruktur * und anschließend * Zertifikate *, um die Zertifikate anzuzeigen. In Kürze wird das neue Zertifikat angezeigt, obwohl Sie möglicherweise die Seite aktualisieren müssen. Sobald Sie das Zertifikat sehen, können Sie es mit Ihrer Anwendung verwenden.

Schritt 2 - Verknüpfen des Zertifikats mit der Anwendung

Sobald das Let’s Encrypt-Zertifikat in Rancher verfügbar ist, können Sie es für die Verwendung im Rancher Load Balancer-Dienst auswählen. Zu diesem Zweck ändern Sie die Regel in Ihrem Load Balancer, um HTTPS zu verwenden und das Zertifikat anzuwenden. Führen Sie die folgenden Schritte aus, um diese Konfigurationsänderungen vorzunehmen:

  1. Suchen Sie Ihren Load Balancer-Service in Rancher und klicken Sie auf die Schaltfläche * Upgrade / Edit *, um auf die Einstellungen zuzugreifen.

  2. Suchen Sie im Abschnitt * Port Rules * nach dem Eintrag, der Anforderungen an Ihre Anwendung weiterleitet, und ändern Sie das * Protokoll * in * HTTPS * und den * Request Host Port * in * 443 *, den Standardport für HTTPS.

  3. Gehen Sie zur Registerkarte * SSL-Beendigung * am unteren Rand der Seite und wählen Sie das Zertifikat aus, das Sie im Feld * Zertifikat * verwenden möchten. Wenn Sie mehrere Zertifikate hinzufügen möchten, können Sie diese im Feld * Alternative Zertifikate * auswählen. Wenn Sie ein Zertifikat auswählen, wird es automatisch mit der entsprechenden Domäne verknüpft.

  4. Klicken Sie unten auf der Seite auf die Schaltfläche * Erstellen *.

Wenn Sie mit dem HTTPS-Protokoll (+ https: // +) auf die Website zugreifen, können Sie feststellen, dass die Verbindung jetzt sicher ist. Da Sie jedoch den Port "+ 80 " durch den Port " 443 " ersetzt haben, funktioniert jede Anfrage über HTTP nicht mehr. Um dieses Problem zu lösen, könnten wir einfach die zuvor verwendete Regel für HTTP und den Port " 80 +" wieder hinzufügen. Stattdessen werden wir unseren Load Balancer so anpassen, dass der Datenverkehr von HTTP zu HTTPS umgeleitet wird. Dies stellt sicher, dass die Besucher die Website immer auf sichere Weise besuchen.

Schritt 3 - HTTP zu HTTPS umleiten

Der Rancher Load Balancer-Dienst unterstützt benutzerdefinierte HAProxy-Konfigurationseinstellungen. Wir werden diese Funktion verwenden, um einige Einstellungen vorzunehmen, die den gesamten Datenverkehr von HTTP zu HTTPS umleiten. Der Ansatz in diesem Abschnitt nutzt den zuvor konfigurierten Let’s Encrypt-Dienst, da er derzeit den Port "+ 80 +" abhört, um Domain-Überprüfungsanfragen weiterzuleiten.

Um die Umleitung einzurichten, suchen Sie Ihren Load-Balancer-Service in Rancher und klicken Sie auf die Schaltfläche * Upgrade / Edit *, um auf die Einstellungen zuzugreifen, die Sie in den vorherigen Schritten vorgenommen haben. Sobald die Einstellungsseite angezeigt wird, wählen Sie die Registerkarte * Custom haproxy.cfg * am unteren Rand der Seite.

Fügen Sie den folgenden Code hinzu, um die Umleitung zu erstellen:

Benutzerdefinierte haproxy.cfg

frontend 80
acl lepath path_beg -i /.well-known/acme-challenge
redirect scheme https code 301 if  !lepath !{ ssl_fc }

Dadurch wird eine Regel für den Lastenausgleich erstellt, die den gesamten Datenverkehr an HTTPS umleitet, jedoch Anforderungen für den bekannten Pfad / acme-challenge + ignoriert, den wir für die Überprüfung der Domäne "Let’s Encrypt" konfiguriert haben. Wir verwenden "+ Code 301 +", um anzuzeigen, dass wir eine permanente Umleitung für diese Domain wünschen. Weitere Informationen zu Umleitungseinstellungen finden Sie in der HAProxy documentation.

Klicken Sie unten auf der Seite auf die Schaltfläche * Bearbeiten *, um diese Änderungen zu übernehmen.

Zu diesem Zeitpunkt werden Ihre Besucher jedes Mal, wenn sie über HTTP auf die Website zugreifen, zu HTTPS umgeleitet, wodurch die Website für alle sicher ist. Jetzt können wir unsere Website testen.

Schritt 4 - Testen des Setups

Öffnen Sie zum Testen Ihrer Website die Adresse in einem Webbrowser mit dem HTTP-Protokoll (+ http: // +) und suchen Sie in der Adressleiste nach dem Sicherheitsindikator. Sie können es auch mit dem Dienstprogramm "+ curl +" testen, indem Sie den folgenden Befehl ausführen, der eine Anforderung an den Server sendet, allen Umleitungen folgt und nur die Antwortheader zurückgibt:

curl -I -L http://

Sie sollten ein Ergebnis wie das folgende sehen:

OutputHTTP/1.1 301 Found
Cache-Control: no-cache
Content-length: 0
Location:
Connection: close

HTTP/1.1
Cache-Control: public, max-age=0
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Date: Sun, 19 Feb 2017 03:42:47 GMT

Der erste Ausgabeblock zeigt die Antwort an, wenn die Website zum ersten Mal über HTTP angefordert wird. Er gibt an, dass sie gefunden wurde, der Speicherort sich jedoch jetzt an einer anderen Adresse befindet. Beachten Sie den Abschnitt "301 gefunden +", der Ihnen mitteilt, dass die von uns hinzugefügte HAProxy-Regel funktioniert hat. Der Abschnitt " Standort " zeigt den neuen Standort der angeforderten Ressource. Der zweite Ausgabeblock zeigt, dass der Umleitung an die neue Position die Zeichenfolge " Wellung +" folgte. Es wird auch angezeigt, dass die Website am neuen Speicherort gefunden wurde, wie aus der Antwort "+200 OK +" hervorgeht.

Fazit

In diesem Lernprogramm richten Sie HTTPS auf einer Website mit Rancher und dem Let’s Encrypt-Dienst ein. Das Erstellen einer sicheren Website ist jetzt so einfach wie nie zuvor und Sie müssen sich keine Sorgen mehr machen, Ihre Zertifikate ständig zu erneuern oder andere Tools für die Aufgabe einzurichten. Und mit Rancher können Sie Ihre Infrastruktur erweitern, um zukünftige Anforderungen zu erfüllen.