Verwendung Verschlüsseln wir SSL-Zertifikate für HTTPS-Farmen

GESCHRIEBEN VON Zevenet | 3. Juli 2019

Übersicht

Let's Encrypt ist eine offene und automatisierte Zertifizierungsstelle, die das verwendet ACME (Automatische Zertifikatsverwaltungsumgebung), um jedem kompatiblen Client kostenlose TLS / SSL-Zertifikate zur Verfügung zu stellen. Mit diesen Zertifikaten kann die Kommunikation zwischen den Webservern und den Benutzern verschlüsselt werden.

In diesem Lernprogramm werden die Zertifizierungsstellen und die Funktionsweise der Zevenet-Integration mit Let's Encrypt kurz erläutert. Anschließend wird erläutert, wie Zevenet die verwendet certbot (ACME-Client), um die Kommunikation mit Let's Encrypt-Infrastruktur herzustellen.

Zevenet Load Balancer 6.0.3 oder höher enthält einen winzigen Certbot-Wrapper namens letsencryptz In den folgenden Zeilen wird die Funktionsweise dieses Wrappers erläutert, damit die Certbot-Webroot-Funktionalität in Produktionsumgebungen verwendet werden kann.

Wie funktioniert die Verschlüsselung der Validierung?

Als kurze Beschreibung der Webroot-Funktionalität erstellt das Webroot-Plugin eine temporäre Datei für jede Ihrer angeforderten Domänen im Zevenet-Dateipfad /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Anschließend sendet der Let's Encrypt-Validierungsserver HTTP-Anforderungen, um zu überprüfen, ob der DNS für jede angeforderte Domäne in den Server aufgelöst wird, auf dem der letsencryptz-Wrapper ausgeführt wird, und auf die temporäre Datei für Validierungszwecke zugegriffen werden kann. Das folgende Diagramm beschreibt ein reales Beispiel:

Lassen Sie uns Zevenet verschlüsseln

Im vorherigen Diagramm befindet sich Zevenet Load Balancer hinter einem Router / einer Firewall mit einer öffentlichen IP-Adresse 185.79.20.147 (als Beispiel) Der HTTP- und HTTPS-Datenverkehr wird mit VIP 192.168.101.31 (als Beispiel) an den internen Load Balancer weitergeleitet, wobei der Load Balancer mit verschiedenen 2-Farmen konfiguriert wird:

HTTPS-Farmname Web-Hosting 192.168.101.31:443. Diese Farm ist für das Webhosting verantwortlich, verschiedene Webserver werden zusammen mit diesem im Internet veröffentlicht. Zum Beispiel, test1.zevenet.es, test2.zevenet.es, test3.zevenet.es testen unter anderem Webseiten, die auf diesem virtuellen Dienst veröffentlicht wurden.
HTTP-Farmname WebhostingRedirect 192.168.101.31:80. Diese Farm wird nur für Umleitungszwecke verwendet. Sie erzwingt den gesamten Datenverkehr von HTTP zu HTTPS.

Das vorherige Diagramm beschreibt eine SSL Let's Encrypt Certificate-Anforderung für die Domäne test1.zevenet.es wie folgt:

1. Eine Zertifikatsanforderung wird vom Load Balancer selbst an die Let's Encrypt-Infrastruktur gesendet.
2. Verschlüsseln erkennt die neue SSL-Zertifikatanforderung für test1.zevenet.es
3. Lassen Sie uns eine DNS-IP-Auflösung für den angeforderten Host verschlüsseln: test1.zevenet.es Überprüfen, ob das Ergebnis die öffentliche IP ist, die gleiche Ursprungs-IP, die die Anforderung initiiert hat.
4. An dieser Stelle verschlüsseln wir Ansagen zu letsencryptz Skript (Webroot Cerbot), das es benötigt, um eine Datei mit einem zu erstellen HASH im öffentlichen weg http://test1.zevenet.es/.well-know/acme-challenge/ (80 TCP Port), lokales Verzeichnis /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/.. Dann letsencryptz konfiguriert einen temporären Dienst, um diese Datei über das Internet (die Farm) zugänglich zu machen WebhostingRedirect wird zu diesem Zweck geändert. Wenn noch keine Farm konfiguriert ist letsencryptz wird eine zeitliche in diesem VIP und Port erstellen).
6. Sobald letsencryptz bestätigt die Erstellung des temporären Dienstes, Lets Encrypt-Server überprüfen, ob die temporäre Validierungsdatei erstellt wurde und HASH Inhalt ist korrekt.
7. Schließlich antworten Let's Encrypt-Server auf die erste Anfrage mit dem bereits erstellten Zertifikat für Gemeinsamen Namen (CN) test1.zevenet.es.
8. Zevenet speichert das bereits erstellte Zertifikat im lokalen Pfad / usr / local / zevenet / config / und es kann in der Farm konfiguriert werden Web-Hosting.

Zu diesem Zeitpunkt wird das neue Let's Encrypt-Zertifikat für den virtuellen HTTPS-Dienst verwendet.

Verschlüsseln wir die Automatisierungsbefehle

Wie beschrieben ist die letsencryptz Das Skript automatisiert die erforderlichen Aktionen zum Verwalten Ihrer SSL-Zertifikate, z. B. Erstellen, Erneuern, Zerstören oder Auflisten. Hier finden Sie die verfügbaren Befehle.

root@zva6k:~# letsencryptz

letsencryptz description:

letsencryptz is a let's encrypt (certbot) wrapper with minimal parameters ready to manage Let's Encrypt certificates for ZEVENET https profiles. Take into account that this wrapper uses certbot webroot feature so the public Let's encrypt architecture requires to connect with a local Virtual IP and port (TCP 80 by default) in order to do a request validation for the requested domain, so as soon as the "obtain" param is used, this script will configure an HTTP farm which will be accessed by Let's encrypt for verification purpose, this configuration is done automatically by this script itself, only ensure that the used Virtual IP and HTTP port 80 is not used by any another load balanced farm, and also ensure that the DNS resolution for the requested domain is reachable from let's encrypt system.


usage:

/usr/local/zevenet/bin/letsencryptz <action> <commands>

action: --obtain | --destroy | --renew | --list | --listconf | --help

	--obtain: Request new Certificates using webroot cert-bot module.

		commands: --vip <Virtual IP> --farm <Farm Name> --domain <domain1> --domain <domain2> --domain <domainN> --test

        		--vip: The Virtual IP already configured were to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate request. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead.
        		--farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP.
        		--domain: The domain which requests the Certificate for, i.e. www.mycompany.com.
			--test: Optional parameter, if used the certificate is requested for test purpose.

	--destroy: Revoke and delete the indicated Certificate Name, the action is rejected if the given certificate is in use by a farm.
		
		commands: --certname <Certificate Name>
	       	
			--certname: Certificate Name, this value can be obtained from the action --list.

	--renew: Renew the certificates near to expiry, no commands needed
		
		commands: --test --forcerestart --vip <Virtual IP> --farm <Farm Name>
	       		--test:	Optional parameter, if used a dry-run is executed, the renew of the certificates is simulated. 
			--forcerestart: Optional parameter, if used the farms that are using the renewed certificates will be restarted in order to apply the changes.
                        --vip: The Virtual IP already configured where to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate renew. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead.
                        --farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP.

	--list: List all the local certificates managed by let's encrypt and the status, no commands needed.

	--listconf: List the Zevenet let's encrypt configuration module (check global.conf file), no commands needed. 

	--help: Obtain this help.


Es wird einige Zeit dauern, bis letsencryptz zum ersten Mal ausgeführt wird, da das System ungelöste Abhängigkeiten automatisch installiert. Außerdem wird eine Konfigurationsüberprüfung durchgeführt, bevor die Verwendung beginnt. Let's Encrypt fordert ein E-Mail-Konto oder Kontaktzwecke im Zusammenhang mit den Zertifikaten an. Dieses E-Mail-Konto wird für alle Aktionen verwendet, die gegen das Let's Encrypt-System ausgeführt werden. Diese E-Mail kann in der Hauptkonfigurationsdatei konfiguriert werden /usr/local/zevenet/config/global.conf, richtlinie $ le_email.

Einige Anwendungsbeispiele sind nachfolgend aufgeführt.

Zevenet Verschlüsseln wir die Zertifikaterstellung

Dieser Befehl fordert ein neues Zertifikat für die Domäne an test2.zevenet.es. Berücksichtigen Sie, dass es sich bei dem angegebenen VIP um den internen VIP handelt, dessen Datenverkehr von der öffentlichen IP-Adresse zur internen IP-Adresse weitergeleitet werden soll. Wenn Let's Encrypt diesen Dienst nicht erreichen kann, wird die Anforderung abgelehnt.

root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.zevenet.es
WARNING: No farm name specified, a temporal farm with name letsencryptZevenet will be created in VIP 192.168.101.31 port 80.
Configuring farm for let's encrypt Certificate Name verification
Obtaining Certificate for domains test2.zevenet.es...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Non-standard path(s), might not work with crontab installed by your operating system package manager
Certificate Request for the domain(s) test2.zevenet.es OK
Created Certificate name test2.zevenet.es in PEM format ready for HTTPS profile
Destroying webroot configuration for the farm letsencryptZevenet
Deleting already configuration for letsencryptZevenet, service letsencryptz
Restarting farms using renewed certificates: 

Zevenet Verschlüsseln Sie die Liste der Zertifikate

Bei der Ausführung dieses Befehls werden die aktuellen Zertifikate angezeigt, die vom Zevenet Let's Encrypt-System verwaltet werden.

root@zva6k:~# letsencryptz --list
Listing all available certificates for the current configuration in config dir /usr/local/zevenet/config/letsencrypt/
Saving debug log to /var/log/letsencrypt/letsencrypt.log
	Certificate Name: test1.zevenet.es
	Domain(s): test1.zevenet.es
	Expiry Date: 2019-09-19 10:48:02+00:00 (VALID: 77 days)
	Pem Certificate file: /usr/local/zevenet/config/test1_zevenet_es.pem

	Certificate Name: test3.zevenet.es
	Domain(s): test3.zevenet.es
	Expiry Date: 2019-09-26 06:32:52+00:00 (VALID: 83 days)
	Pem Certificate file: /usr/local/zevenet/config/test3_zevenet_es.pem


Berücksichtigen Sie das Feld Zertifikatnamewird dieses Feld vom letsencryptz-Wrapper als erkannt –Certname.

Zevenet Verschlüsseln wir die Zertifikatserneuerung

Der vorherige Befehl prüft, ob ein bereits erstelltes Zertifikat eine Erneuerung erfordert. In diesem Fall wird die Erneuerung automatisch durchgeführt. Beachten Sie, dass, wenn das erneuerte Zertifikat verwendet wird, ein Neustart der Farm erforderlich ist, um die Änderung zu übernehmen. Verwenden Sie dazu bitte die Option –Zwischenstart wenn du willst letsencryptz Startet alle erforderlichen Farmen neu, um die Änderungen zu übernehmen.

root@zva6k:~# letsencryptz --renew --vip 192.168.101.31
Renewing all the required certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Cert not yet due for renewal
Cert not yet due for renewal

Zevenet Verschlüsseln Sie das Löschen von Zertifikaten

Dieser Befehl widerruft und löscht das angegebene Zertifikat. Wenn das System erkennt, dass das ausgewählte Zertifikat derzeit von einer HTTPS-Farm verwendet wird, wird die Aktion abgelehnt. Im obigen Beispiel wird die Löschaktion abgelehnt, da das Zertifikat von der Farm verwendet wird testhttps.

root@zva6k:~# letsencryptz --destroy --certname test3.zevenet.es
Revoking and deleting certificate(s) test3.zevenet.es for the current configuration...
This file can't be deleted because is used by the farm(s):  testhttps

Sobald das Zertifikat nicht mehr von der Farm zugewiesen wurde, wird die Aktion ausgeführt:

root@zva6k:~# letsencryptz --destroy --certname test3.zevenet.es
Revoking and deleting certificate(s) test3.zevenet.es for the current configuration...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Deleted certificate(s) test3.zevenet.es in path /usr/local/zevenet/config/test3_zevenet_es.pem

Migrieren Lassen Sie uns Zertifikate nach Zevenet verschlüsseln

Zevenet Load Balancer speichert alle Konfigurationsdateien von certbot im lokalen Pfad / usr / local / zevenet / config / letsencrypt /. Um Ihre vorhandenen certbot Konfigurationsdateien zu verschieben (standardmäßig in / etc / letsencrypt) von einem anderen Server zu Zevenet müssen Sie nur einen Tarball (tar.gz-Datei) dieses vorhandenen Konfigurationsverzeichnisses auf Ihrem Server erstellen und den Inhalt im Zevenet Let's Encrypt-Konfigurationspfad dekomprimieren. Schließlich sollten Sie die Variable ändern $ le_email in der Datei global.conf auf dieselbe E-Mail-Adresse, die in den vorherigen Anfragen verwendet wurde.

Unterstützung für das Verschlüsseln von Zertifikaten Clustering

Das Zevenet Let's Encrypt-Plugin wird vom Zevenet Cluster-Dienst vollständig unterstützt. Alle Let's Encrypt-Aktionen werden in einer Konfigurationsdatei gespeichert, die vom Zevenet Cluster Service repliziert wird MASTER Knoten wird auf den repliziert SLAVE Knoten automatisch, aber jede Aktion in der SLAVE Knoten, die mit Let's Encrypt zusammenhängen, werden verworfen, um eine Desynchronisation zu vermeiden.

Verschlüsseln wir Zertifikate automatisch erneuern

Das Zevenet Let's Encrypt-Plugin kann so konfiguriert werden, dass täglich überprüft wird, ob ein Zertifikat erneuert werden muss. Wenn das System ein bestimmtes Zertifikat automatisch erneuert und es von einer Farm verwendet wird, wird die Farm automatisch neu gestartet, um das anzuwenden Zertifikatänderung.

Um die automatische Verlängerung zu konfigurieren, gehen Sie bitte wie folgt vor:

Erstellen Sie die folgende Cron-Datei /etc/cron.d/letsencryptz mit folgendem Inhalt:

root@zva6k:~# cat /etc/cron.d/letsencryptz
00 00 * * *	root	/usr/local/zevenet/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31

Mit dieser Konfiguration wird die Erneuerungsprüfung täglich um 00:00 Uhr (Mitternacht) ausgeführt. Der VIP 192.168.101.31 wird im Port 80 zu Überprüfungszwecken von Let's Encrypt System verwendet.

Referenzen

Einige in diesem Artikel verwendete Verweise sind:

Webroot und Certbot
So verschlüsseln wir

Teilen:

Dokumentation unter den Bedingungen der GNU Free Documentation License.

War dieser Artikel hilfreich?

Verwandte Artikel