Konfigurieren von End-to-End-TLS mit Application Gateway mithilfe von PowerShell
Artikel
Überblick
Azure Application Gateway unterstützt die End-to-End-Verschlüsselung des Datenverkehrs. Application Gateway terminiert die TLS/SSL-Verbindung am Anwendungsgateway. Das Gateway wendet dann die Routingregeln auf den Datenverkehr an, verschlüsselt das Paket erneut und leitet das Paket basierend auf den definierten Routingregeln an den entsprechenden Back-End-Server weiter. Antworten vom Webserver durchlaufen denselben Prozess zurück an den Endbenutzer.
Application Gateway unterstützt das Definieren benutzerdefinierter TLS-Optionen. Außerdem wird das Deaktivieren der Protokollversionen TLSv1.0, TLSv1.1 und TLSv1.2 sowie das Definieren der zu verwendenden Verschlüsselungssammlungen und der jeweiligen Priorität unterstützt. Weitere Informationen zu konfigurierbaren TLS-Optionen finden Sie in der Übersicht über TLS-Richtlinien.
Hinweis
SSL 2.0 und SSL 3.0 sind standardmäßig deaktiviert und können nicht aktiviert werden. Sie werden als unsicher eingestuft und können mit Application Gateway nicht verwendet werden.
Szenario
In diesem Szenario erfahren Sie, wie Sie mithilfe von PowerShell ein Anwendungsgateway mit End-to-End-TLS erstellen.
Dieses Szenario umfasst Folgendes:
Erstellen einer Ressourcengruppe namens appgw-rg
Erstellen eines virtuellen Netzwerks namens appgwvnet mit dem Adressraum 10.0.0.0/16
Erstellen zweier Subnetze namens appgwsubnet und appsubnet.
Erstellen eines kleinen Anwendungsgateways mit Unterstützung der End-to-End-TLS-Verschlüsselung und Einschränkung bestimmter TLS-Protokollversionen und Verschlüsselungssammlungen
Zum Konfigurieren von End-to-End-TLS mit einem Anwendungsgateway wird ein Zertifikat für das Gateway benötigt. Außerdem sind weitere Zertifikate für die Back-End-Server erforderlich. Das Gatewayzertifikat wird zum Ableiten eines symmetrischen Schlüssels gemäß der Spezifikation des TLS-Protokolls verwendet. Der symmetrische Schlüssel wird dann zum Verschlüsseln und Entschlüsseln des Datenverkehrs mit dem Gateway verwendet. Das Gatewayzertifikat muss im PFX-Format (Personal Information Exchange, privater Informationsaustausch) vorliegen. In diesem Dateiformat können Sie den privaten Schlüssel exportieren. Das ist erforderlich, damit das Anwendungsgateway die Ver- und Entschlüsselung des Datenverkehrs durchführen kann.
Für die End-to-End-TLS-Verschlüsselung muss das Back-End explizit vom Anwendungsgateway zugelassen werden. Laden Sie das öffentliche Zertifikat der Back-End-Server auf das Anwendungsgateway hoch. Durch das Hinzufügen des Zertifikats wird sichergestellt, dass das Anwendungsgateway nur mit bekannten Back-End-Instanzen kommuniziert. Außerdem wird auf diese Weise die End-to-End-Kommunikation gesichert.
Der Konfigurationsprozess wird in den folgenden Abschnitten beschrieben.
Erstellen der Ressourcengruppe
Dieser Abschnitt führt Sie durch die Erstellung einer Ressourcengruppe, die das Anwendungsgateway enthält.
Melden Sie sich bei Ihrem Azure-Konto an.
Connect-AzAccount
Wählen Sie das Abonnement aus, das für dieses Szenario verwendet werden soll.
Erstellen eines virtuelles Netzwerkes und eines Subnetzes für das Application Gateway.
Im folgenden Beispiel werden ein virtuelles Netzwerk und zwei Subnetze erstellt. In einem Subnetz befindet sich das Anwendungsgateway. Das andere Subnetz wird für die Back-Ends verwendet, die die Webanwendung hosten.
Weisen Sie einen Adressbereich für das Subnetz zu, das für das Anwendungsgateway verwendet werden soll.
Die Größen der für ein Anwendungsgateway konfigurierten Subnetze sollten richtig bemessen sein. Ein Anwendungsgateway kann für bis zu 10 Instanzen konfiguriert werden. Jede Instanz erhält dabei genau eine IP-Adresse aus dem Subnetz. Ein zu kleines Subnetz kann sich negativ auf die Erweiterungsmöglichkeiten eines Anwendungsgateways auswirken.
Weisen Sie einen Adressbereich zu, der für den Back-End-Adresspool verwendet werden soll.
Erstellen der öffentlichen IP-Adresse für die Front-End-Konfiguration
Erstellen Sie eine öffentliche IP-Ressource, die für das Anwendungsgateway verwendet werden soll. Diese öffentliche IP-Adresse wird in einem der folgenden Schritte verwendet.
Application Gateway unterstützt nicht die Verwendung einer öffentlichen IP-Adresse, die mit einer definierten Domänenbezeichnung erstellt wird. Nur eine öffentliche IP-Adresse mit einer dynamisch erstellten Domänenbezeichnung wird unterstützt. Wenn Sie einen benutzerfreundlichen DNS-Namen für das Anwendungsgateway benötigen, empfiehlt es sich, einen CNAME-Eintrag als Alias zu verwenden.
Erstellen eines Konfigurationsobjekts für das Anwendungsgateway
Vor dem Erstellen des Anwendungsgateways werden die Konfigurationselemente festgelegt. Die folgenden Schritten erstellen die Konfigurationselemente, die für eine Application Gateway-Ressource benötigt werden.
Erstellen einer IP-Konfiguration für das Anwendungsgateway Diese Einstellung konfiguriert, welches der Subnetze das Anwendungsgateway verwendet. Beim Starten des Anwendungsgateways wird eine IP-Adresse aus dem konfigurierten Subnetz ausgewählt, und der Netzwerkdatenverkehr wird an die IP-Adressen im Back-End-IP-Pool weitergeleitet. Beachten Sie, dass jede Instanz eine eigene IP-Adresse benötigt.
Erstellen Sie eine Front-End-IP-Konfiguration. Diese Einstellung ordnet dem Front-End des Anwendungsgateways eine private oder öffentliche IP-Adresse zu. Im folgenden Schritt wird die öffentliche IP-Adresse aus dem vorherigen Schritt der Front-End-IP-Konfiguration zugeordnet.
Konfigurieren Sie den Back-End-IP-Adresspool mit den IP-Adressen der Back-End-Webserver. Dies sind die IP-Adressen, die den Netzwerkdatenverkehr vom Front-End-IP-Endpunkt empfangen. Ersetzen Sie die IP-Adressen im Beispiel durch Ihre eigenen IP-Adressendpunkte der Anwendung.
Ein vollqualifizierter Domänenname (FQDN) ist ebenfalls ein gültiger Wert, den Sie anstelle einer IP-Adresse für die Back-End-Server verwenden können. Die Aktivierung erfolgt über den Schalter -BackendFqdns.
Konfigurieren Sie den Front-End-IP-Port für den öffentlichen IP-Endpunkt. Dieser Port ist der Port, mit dem Endbenutzer eine Verbindung herstellen.
Konfigurieren Sie das Zertifikat für das Anwendungsgateway. Dieses Zertifikat wird zum Entschlüsseln und erneuten Verschlüsseln des Datenverkehrs auf dem Anwendungsgateway verwendet.
In diesem Beispiel wird das Zertifikat für TLS-Verbindungen konfiguriert. Das Zertifikat muss im .pfX-Format vorliegen.
Erstellen Sie den HTTP-Listener für das Anwendungsgateway. Weisen Sie die zu verwendende Front-End-IP-Konfiguration, den Port und das TLS/SSL-Zertifikat zu.
Laden Sie das Zertifikat hoch, das von den TLS-fähigen Ressourcen des Back-End-Pools verwendet werden soll.
Hinweis
Der Standardtest ruft den öffentlichen Schlüssel aus der standardmäßigen TLS-Bindung in der IP-Adresse des Back-Ends ab und vergleicht den Wert dieses öffentlichen Schlüssels mit dem Wert des öffentlichen Schlüssels, den Sie hier bereitstellen.
Wenn Sie Hostheader und die Servernamensanzeige (SNI) am Back-End verwenden, ist der abgerufene öffentliche Schlüssel nicht zwingend der Zielort für den Datenverkehr. Öffnen Sie im Zweifelsfall auf den Back-End-Servern die Seite https://127.0.0.1/, um sich zu vergewissern, welches Zertifikat für die standardmäßige TLS-Bindung verwendet wird. Verwenden Sie den öffentlichen Schlüssel aus der Aufforderung in diesem Abschnitt. Wenn Sie Hostheader und SNI in HTTPS-Bindungen verwenden und durch eine manuelle Browseranforderung in https://127.0.0.1/ auf den Back-End-Servern keine Antwort und kein Zertifikat erhalten, müssen Sie eine Standard-TLS-Bindung auf diesen Servern einrichten. Andernfalls sind die Tests nicht erfolgreich, und das Back-End wird nicht zugelassen.
Das im vorherigen Schritt bereitgestellte Zertifikat sollte dem öffentlichen Schlüssel des PFX-Zertifikats entsprechen, das auf dem Back-End vorliegt. Exportieren Sie das auf dem Back-End-Server im CER-Format (Claim, Evidence, and Reasoning) installierte Zertifikat (nicht das Stammzertifikat), und verwenden Sie es für diesen Schritt. Durch diesen Schritt wird das Back-End beim Anwendungsgateway zugelassen.
Wenn Sie die Application Gateway v2-SKU verwenden, erstellen Sie anstelle eines Authentifizierungszertifikats ein vertrauenswürdiges Stammzertifikat. Weitere Informationen finden Sie unter Übersicht über End-to-End-TLS mit Application Gateway.
Konfigurieren Sie die HTTP-Einstellungen für das Back-End des Anwendungsgateways. Weisen Sie den HTTP-Einstellungen das Zertifikat zu, das im vorherigen Schritt hochgeladen wurde.
Erstellen Sie eine Routingregel für den Lastenausgleich, durch die das Verhalten des Lastenausgleichs konfiguriert wird. In diesem Beispiel wird eine Roundrobin-Basisregel erstellt.
Konfigurieren Sie die Instanzgröße des Anwendungsgateways. Die verfügbaren Größen sind Standard_Small, Standard_Medium und Standard_Large. Für die Kapazität stehen die Werte 1 bis 10 zur Verfügung.
$sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2
Hinweis
Zu Testzwecken kann für die Anzahl von Instanzen der Wert 1 ausgewählt werden. Beachten Sie, dass eine Anzahl von weniger als zwei Instanzen nicht durch die SLA abgedeckt ist und daher nicht empfohlen wird. Gateways mit niedriger Nutzungsdauer sind für Dev/Test-Umgebungen vorgesehen und sollten nicht zu Produktionszwecken verwendet werden.
Konfigurieren Sie die TLS-Richtlinie, die auf dem Anwendungsgateway verwendet werden soll. Application Gateway ermöglicht das Festlegen einer Mindestversion für das TLS-Protokoll.
Die folgenden Werte sind eine Liste mit definierbaren Protokollversionen:
TLSV1_0
TLSV1_1
TLSV1_2
Im folgenden Beispiel wird die Protokollmindestversion auf TLSv1_2 festgelegt sowie nur TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 und TLS_RSA_WITH_AES_128_GCM_SHA256 aktiviert.
Erstellen Sie das Anwendungsgateway mithilfe der oben aufgeführten Schritte. Die Erstellung des Gateways ist ein Prozess, dessen Ausführung eine lange Zeit in Anspruch nimmt.
Verwenden Sie für die V1-SKU den folgenden Befehl:
Fügen Sie die neue Zertifikatsressource aus der CER-Datei hinzu, die den öffentlichen Schlüssel des Zertifikats enthält. Dieses Zertifikat kann mit demjenigen identisch sein, das dem Listener für die TLS-Terminierung auf dem Anwendungsgateway hinzugefügt wurde.
Rufen Sie das neue Authentifizierungszertifikatobjekt in eine Variable ab (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).
Weisen Sie das neue Zertifikat in der BackendHttp-Einstellung zu, und verweisen Sie mit der $AuthCert-Variablen auf das Zertifikat. (Geben Sie den Namen der HTTP-Einstellung an, die Sie ändern möchten.)
Beschränken von TLS-Protokollversionen für ein vorhandenes Anwendungsgateway
Mit den bisher erläuterten Schritten haben Sie eine Anwendung mit End-to-End-TLS erstellt und bestimmte Versionen des TLS-Protokolls deaktiviert. Das folgende Beispiel deaktiviert bestimmte TLS-Richtlinien auf einem vorhandenen Anwendungsgateway.
Rufen Sie das Anwendungsgateway ab, das aktualisiert werden soll.
Definieren Sie eine TLS-Richtlinie. Im folgenden Beispiel sind TLSv1.0 und TLSv1.1 deaktiviert, und die Verschlüsselungsverfahren-Suites TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 und TLS_RSA_WITH_AES_128_GCM_SHA256 sind die einzigen zulässigen.
Zum Schluss aktualisieren Sie das Gateway. Dieser letzte Schritt nimmt einen längeren Zeitraum in Anspruch. Nach Abschluss des Vorgangs ist End-to-End-TLS auf dem Anwendungsgateway konfiguriert.
$gw | Set-AzApplicationGateway
Abrufen des DNS-Namens eines Anwendungsgateways
Nach dem Erstellen des Gateways wird das Front-End für die Kommunikation konfiguriert. Application Gateway erfordert einen dynamisch zugewiesenen DNS-Namen, wenn eine öffentliche IP-Adresse verwendet wird, die nicht benutzerfreundlich ist. Um zu gewährleisten, dass Endbenutzer auf das Anwendungsgateway zugreifen können, können Sie mit einem CNAME-Eintrag auf den öffentlichen Endpunkt des Anwendungsgateways verweisen. Weitere Informationen finden Sie unter Konfigurieren eines benutzerdefinierten Domänennamens in Azure.
Rufen Sie zum Konfigurieren eines Alias mithilfe des PublicIPAddress-Elements, das an das Anwendungsgateway angefügt ist, Details zum Anwendungsgateway sowie die zugeordnete IP-Adresse/den zugeordneten DNS-Namen ab. Verwenden Sie den DNS-Namen des Anwendungsgateways zum Erstellen eines CNAME-Eintrags, der die beiden Webanwendungen an diesen DNS-Namen verweist. Die Verwendung von A-Einträgen wird nicht empfohlen, da sich die VIP beim Neustart des Anwendungsgateways möglicherweise ändert.
Weitere Informationen zum Verstärken der Sicherheit Ihrer Webanwendungen mit Web Application Firewall über Application Gateway finden Sie unter Web Application Firewall – Übersicht.
Zeigen Sie Ihre Kenntnisse zu Entwurf, Implementierung und Wartung der Azure-Netzwerkinfrastruktur, zum Lastenausgleich für Datenverkehr, zum Netzwerkrouting u. v. m.