Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Overview
Azure Application Gateway unterstützt Ende-zu-Ende-Verschlüsselung von Datenverkehr. Application Gateway beendet die TLS/SSL-Verbindung am Anwendungsgateway. Das Gateway wendet dann die Routing-Regeln auf den Datenverkehr an, verschlüsselt das Paket neu und leitet das Paket basierend auf den definierten Routing-Regeln an den entsprechenden Backend-Server weiter. Antworten vom Webserver durchlaufen denselben Prozess zurück an den Endbenutzer.
Application Gateway unterstützt die Definition benutzerdefinierter TLS-Optionen. Es unterstützt außerdem das Deaktivieren der folgenden Protokollversionen: TLSv1.0, TLSv1.1 und TLSv1.2 sowie die Festlegung der zu verwendenden Chiffresuiten und die Präferenzreihenfolge. Weitere Informationen zu konfigurierbaren TLS-Optionen finden Sie in der Übersicht über TLS-Richtlinien.
Note
SSL 2.0 und SSL 3.0 sind standardmäßig deaktiviert und können nicht aktiviert werden. Sie gelten als unsicher und können nicht mit Application Gateway verwendet werden.
Szenario
In diesem Szenario lernt man, wie man ein Anwendungsgateway erstellt, indem man End-to-End-TLS mit PowerShell verwendet.
Dieses Szenario umfasst Folgendes:
- Erstelle eine Ressourcengruppe namens appgw-rg.
- Erstelle ein virtuelles Netzwerk namens appgwvnet mit dem Adressraum 10.0.0.0/16.
- Erstelle zwei Subnetze namens appgwsubnet und appsubnet.
- Erstellen Sie ein kleines Anwendungsgateway, das End-to-End-TLS-Verschlüsselung unterstützt und die TLS-Protokollversionen und Chiffresuiten einschränkt.
Bevor Sie anfangen
Note
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Install Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Um End-to-End-TLS mit einem Anwendungsgateway zu konfigurieren, ist ein Zertifikat für das Gateway erforderlich und Zertifikate für die Backend-Server. Das Gateway-Zertifikat wird verwendet, um gemäß der TLS-Protokollspezifikation einen symmetrischen Schlüssel abzuleiten. Der symmetrische Schlüssel wird dann verwendet, um den an das Gateway gesendeten Datenverkehr zu verschlüsseln und zu entschlüsseln. Das Gateway-Zertifikat muss im Personal Information Exchange (PFX)-Format vorliegen. Dieses Dateiformat ermöglicht es Ihnen, den privaten Schlüssel zu exportieren, der vom Application Gateway benötigt wird, um die Verschlüsselung und Entschlüsselung des Datenverkehrs durchzuführen.
Für die End-to-End-TLS-Verschlüsselung muss das Backend ausdrücklich vom Anwendungsgateway erlaubt sein. Laden Sie das öffentliche Zertifikat der Backend-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.
Ressourcengruppe erstellen
Dieser Abschnitt führt Sie durch die Erstellung einer Ressourcengruppe, die das Anwendungsgateway enthält.
Melden Sie sich bei Ihrem Azure-Konto an.
Connect-AzAccountWählen Sie das Abonnement, das für dieses Szenario verwendet werden soll.
Select-Azsubscription -SubscriptionName "<Subscription name>"Erstellen Sie eine Ressourcengruppe. (Überspringen Sie diesen Schritt, wenn Sie eine bestehende Ressourcengruppe verwenden.)
New-AzResourceGroup -Name appgw-rg -Location "West US"
Erstellen eines virtuelles Netzwerkes und eines Subnetzes für das Application Gateway.
Das folgende Beispiel erstellt ein virtuelles Netzwerk und zwei Subnetze. Ein Subnetz wird verwendet, um das Anwendungsgateway zu halten. Das andere Subnetz wird für die Backends verwendet, die die Webanwendung hosten.
Weisen Sie dem Subnetz für das Anwendungsgateway einen Adressbereich zu.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -AddressPrefix 10.0.0.0/24Note
Subnetze korrekt zu dimensionieren, die für ein Anwendungsgateway konfiguriert sind. Ein v1-Anwendungsgateway unterstützt bis zu 32 Instanzen, während ein v2-Anwendungsgateway bis zu 125 Instanzen skaliert. Jede Instanz nimmt eine IP-Adresse aus dem Subnetz, also dimensioniert das Subnetz so, dass es die maximale Skalierung für Ihre SKU ermöglicht. Ein zu kleines Subnetz kann die Skalierung eines Anwendungsgateways negativ beeinflussen. Für v2-Autoskalierung und Instanzbeschränkungen siehe Scale Application Gateway v2 und WAF v2.
Weisen Sie einen Adressbereich zu, der für den Backend-Adresspool verwendet wird.
$nicSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -AddressPrefix 10.0.2.0/24Erstelle ein virtuelles Netzwerk mit den in den vorangegangenen Schritten definierten Subnetzen.
$vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnetRufen Sie in den folgenden Schritten die virtuelle Netzwerkressource und die Subnetzressourcen ab, die verwendet werden sollen.
$vnet = Get-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -VirtualNetwork $vnet $nicSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -VirtualNetwork $vnet
Erstellen Sie eine öffentliche IP-Adresse für die Frontend-Konfiguration
Erstellen Sie eine öffentliche IP-Ressource, die für das Anwendungsgateway verwendet wird. Diese öffentliche IP-Adresse wird in einem der folgenden Schritte verwendet.
$publicip = New-AzPublicIpAddress -ResourceGroupName appgw-rg -Name 'publicIP01' -Location "West US" -AllocationMethod Dynamic
Important
Application Gateway unterstützt nicht die Nutzung einer öffentlichen IP-Adresse, die mit einem definierten Domain-Label erstellt wurde. Es wird nur eine öffentliche IP-Adresse mit einem dynamisch erstellten Domain-Label unterstützt. Wenn Sie einen freundlichen DNS-Namen für das Anwendungsgateway benötigen, empfehlen wir, einen CNAME-Eintrag als Alias zu verwenden.
Erstellen Sie ein Anwendungsgateway-Konfigurationsobjekt
Alle Konfigurationselemente werden vor der Erstellung des Anwendungsgateways festgelegt. Die folgenden Schritte erstellen die Konfigurationselemente, die für eine Anwendungsgateway-Ressource benötigt werden.
Erstellen Sie eine IP-Konfiguration des Anwendungsgateways. Diese Einstellung konfiguriert, welches der Subnetze das Anwendungsgateway verwendet. Wenn das Anwendungsgateway startet, empfängt es eine IP-Adresse aus dem konfigurierten Subnetz und leitet den Netzwerkverkehr an die IP-Adressen im Backend-IP-Pool weiter. Beachten Sie, dass jede Instanz eine eigene IP-Adresse benötigt.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnetErstellen Sie eine Frontend-IP-Konfiguration. Diese Einstellung ordnet eine private oder öffentliche IP-Adresse dem Frontend des Anwendungsgateways zu. Der folgende Schritt verknüpft die öffentliche IP-Adresse im vorangegangenen Schritt mit der Frontend-IP-Konfiguration.
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicipKonfigurieren Sie den Backend-IP-Adresspool mit den IP-Adressen der Backend-Webserver. Diese IP-Adressen sind die IP-Adressen, die den Netzwerkverkehr empfangen, der vom Frontend-IP-Endpunkt kommt. Ersetzen Sie die IP-Adressen im Beispiel durch Ihre eigenen Anwendungs-IP-Endpunkte.
$pool = New-AzApplicationGatewayBackendAddressPool -Name 'pool01' -BackendIPAddresses 203.0.113.1, 203.0.113.2, 203.0.113.3Note
Ein vollständig qualifizierter Domainname (FQDN) ist ebenfalls ein gültiger Wert anstelle einer IP-Adresse für die Backend-Server. Du aktivierst es über den -BackendFqdns-Switch .
Konfigurieren Sie den Frontend-IP-Port für den öffentlichen IP-Endpunkt. Dieser Port ist der Port, an den Endnutzer sich verbinden.
$fp = New-AzApplicationGatewayFrontendPort -Name 'port01' -Port 443Konfigurieren Sie das Zertifikat für das Anwendungsgateway. Dieses Zertifikat wird verwendet, um den Datenverkehr auf dem Anwendungsgateway zu entschlüsseln und erneut zu verschlüsseln.
$passwd = ConvertTo-SecureString <certificate file password> -AsPlainText -Force $cert = New-AzApplicationGatewaySSLCertificate -Name cert01 -CertificateFile <full path to .pfx file> -Password $passwdNote
Dieses Beispiel konfiguriert das für die TLS-Verbindung verwendete Zertifikat. Das Zertifikat muss im .pfx-Format sein.
Erstellen Sie den HTTP-Listener für das Anwendungsgateway. Weisen Sie die Frontend-IP-Konfiguration, den Port und das TLS/SSL-Zertifikat zur Verwendung zu.
$listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $certLaden Sie das Zertifikat hoch, um es auf den TLS-fähigen Backend-Pool-Ressourcen zu verwenden.
Note
Die Standard-Probe erhält den öffentlichen Schlüssel aus der Standard-TLS-Bindung auf der IP-Adresse des Backends und vergleicht den öffentlichen Schlüsselwert, den sie erhält, mit dem von dir hier angegebenen öffentlichen Schlüsselwert.
Wenn du Host-Header und Server Name Indication (SNI) im Backend verwendest, ist der abgerufene öffentliche Schlüssel möglicherweise nicht der beabsichtigte Standort, zu dem der Datenverkehr fließt. Wenn Sie unsicher sind, besuchen https://127.0.0.1/ Sie die Backend-Server, um zu bestätigen, welches Zertifikat für die Standard-TLS-Bindung verwendet wird. Verwenden Sie den öffentlichen Schlüssel aus dieser Anfrage in diesem Abschnitt. Wenn Sie Host-Header und SNI auf HTTPS-Bindungen verwenden und keine Antwort und kein Zertifikat von einer manuellen Browseranfrage https://127.0.0.1/ auf den Backend-Servern erhalten, müssen Sie eine Standard-TLS-Bindung auf diesen Servern einrichten. Wenn du das nicht tust, scheitern die Sonden und das Backend ist nicht erlaubt.
Weitere Informationen zu SNI in Application Gateway finden Sie unter Überblick über TLS-Terminierung und End-to-End-TLS mit Application Gateway.
$authcert = New-AzApplicationGatewayAuthenticationCertificate -Name 'allowlistcert1' -CertificateFile C:\cert.cerNote
Das im vorherigen Schritt bereitgestellte Zertifikat sollte der öffentliche Schlüssel des .pfx-Zertifikats sein, das im Backend vorhanden ist. Exportiere das auf dem Backend-Server installierte Zertifikat (nicht das Root-Zertifikat) im Format Claim, Evidence, and Reasoning (CER) und verwende es in diesem Schritt. Dieser Schritt ermöglicht das Backend mit dem Anwendungsgateway.
Wenn Sie die Application Gateway v2 SKU verwenden, erstellen Sie ein vertrauenswürdiges Root-Zertifikat statt eines Authentifizierungszertifikats. Weitere Informationen finden Sie unter Überblick über End-to-End-TLS mit Application Gateway:
$trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile <path to root cert file>Konfigurieren Sie die HTTP-Einstellungen für das Backend des Anwendungsgateways. Weisen Sie das im vorherigen Schritt hochgeladene Zertifikat den HTTP-Einstellungen zu.
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name 'setting01' -Port 443 -Protocol Https -CookieBasedAffinity Enabled -AuthenticationCertificates $authcertFür die Application Gateway v2 SKU verwenden Sie folgenden Befehl:
$poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"Erstellen Sie eine Routing-Regel für den Load-Balancer, die das Verhalten des Load Balancers konfiguriert. In diesem Beispiel wird eine grundlegende Round-Robin-Regel erstellt.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $poolKonfigurieren Sie die Instanzgröße des Anwendungsgateways. Für die v1-SKU sind die verfügbaren Größen Standard_Small, Standard_Medium und Standard_Large, und die Kapazitätswerte liegen bei 1 bis 32. Die v2-SKU (Standard_v2 oder WAF_v2) unterstützt bis zu 125 Instanzen. Weitere Informationen finden Sie unter Scale Application Gateway v2 und WAF v2.
$sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2Note
Für Testzwecke kann eine Instanzanzahl von 1 gewählt werden. Es ist wichtig zu wissen, dass jede Anzahl von Fällen unter zwei Fällen nicht vom SLA abgedeckt ist und daher nicht empfohlen wird. Kleine Gateways sollen für Entwicklungstests und nicht für Produktionszwecke verwendet werden.
Konfigurieren Sie die TLS-Richtlinie so, dass sie auf dem Anwendungsgateway verwendet wird. Application Gateway unterstützt die Möglichkeit, eine Mindestversion für TLS-Protokollversionen festzulegen.
Die folgenden Werte sind eine Liste von Protokollversionen, die definiert werden können:
- TLSV1_0
- TLSV1_1
- TLSV1_2
Das folgende Beispiel setzt die minimale Protokollversion auf TLSv1_2 und aktiviert 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 .
$SSLPolicy = New-AzApplicationGatewaySSLPolicy -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256" -PolicyType Custom
Erstellen Sie das Application Gateway
Mit allen vorangegangenen Schritten erstellen Sie das Anwendungsgateway. Die Erstellung des Gateways ist ein Prozess, der sehr lange dauert.
Für die V1-SKU verwenden Sie den untenstehenden Befehl
$appgw = New-AzApplicationGateway -Name appgateway -SSLCertificates $cert -ResourceGroupName "appgw-rg" -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SSLPolicy $SSLPolicy -AuthenticationCertificates $authcert -Verbose
Für die V2-SKU verwenden Sie den untenstehenden Befehl
$appgw = New-AzApplicationGateway -Name appgateway -SSLCertificates $cert -ResourceGroupName "appgw-rg" -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting01 -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SSLPolicy $SSLPolicy -TrustedRootCertificate $trustedRootCert01 -Verbose
Beantrage ein neues Zertifikat, wenn das Backend-Zertifikat abgelaufen ist
Verwenden Sie dieses Verfahren, um ein neues Zertifikat anzuwenden, wenn das Backend-Zertifikat abgelaufen ist.
Rufe das Anwendungsgateway zum Aktualisieren ab.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGFüge die neue Zertifikatsressource aus der .cer-Datei hinzu, die den öffentlichen Schlüssel des Zertifikats enthält und auch dasselbe Zertifikat zum TLS-Termin am Anwendungsgateway hinzugefügt werden kann.
Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer"Erhalten Sie das neue Authentifizierungszertifikatsobjekt in eine Variable (TypeName: Microsoft.Azure). Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).
$AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCertWeise das neue Zertifikat in die BackendHttp-Einstellung zu und verweise es mit der $AuthCert-Variable. (Gib den Namen der HTTP-Einstellung an, den du ändern möchtest.)
$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
- Committen Sie die Änderung im Anwendungsgateway und übergeben Sie die neue Konfiguration in die $out Variable.
Set-AzApplicationGateway -ApplicationGateway $gw
Entferne ein ungenutztes, abgelaufenes Zertifikat aus den HTTP-Einstellungen
Verwenden Sie dieses Verfahren, um ein nicht verwendetes, abgelaufenes Zertifikat aus den HTTP-Einstellungen zu entfernen.
Rufe das Anwendungsgateway zum Aktualisieren ab.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGListen Sie den Namen des Authentifizierungszertifikats an, das Sie entfernen möchten.
Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select nameEntfernen Sie das Authentifizierungszertifikat von einem Anwendungsgateway.
$gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCertFühren Sie für die Änderung einen Commit aus.
Set-AzApplicationGateway -ApplicationGateway $gw
Begrenze TLS-Protokollversionen auf einem bestehenden Anwendungsgateway
Die vorherigen Schritte führten Sie dazu, eine Anwendung mit End-to-End-TLS zu erstellen und bestimmte TLS-Protokollversionen zu deaktivieren. Das folgende Beispiel deaktiviert bestimmte TLS-Richtlinien auf einem bestehenden Anwendungsgateway.
Rufe das Anwendungsgateway zum Aktualisieren ab.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGDefinieren Sie eine TLS-Richtlinie. Im folgenden Beispiel sind TLSv1.0 und TLSv1.1 deaktiviert, und nur die Chiffresuiten 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 erlaubt.
Set-AzApplicationGatewaySSLPolicy -MinProtocolVersion TLSv1_2 -PolicyType Custom -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256" -ApplicationGateway $gwAktualisieren Sie schließlich das Gateway. Dieser letzte Schritt ist eine langwierige Aufgabe. Wenn dies erledigt ist, wird das End-to-End-TLS auf dem Anwendungsgateway konfiguriert.
$gw | Set-AzApplicationGateway
Erhalten Sie den DNS-Namen eines Anwendungsgateways
Nachdem das Gateway erstellt wurde, besteht der nächste Schritt darin, das Frontend für die Kommunikation zu konfigurieren. Application Gateway benötigt bei Verwendung einer öffentlichen IP einen dynamisch zugewiesenen DNS-Namen, was nicht freundlich ist. Um sicherzustellen, dass Endnutzer das Anwendungsgateway erreichen können, können Sie einen CNAME-Datensatz verwenden, der auf den öffentlichen Endpunkt des Anwendungsgateways verweist. Weitere Informationen finden Sie unter Konfiguration eines benutzerdefinierten Domainnamens für in Azure.
Um ein Alias zu konfigurieren, rufen Sie Details des Anwendungsgateways und des zugehörigen IP/DNS-Namens ab, indem Sie das PublicIPAddress-Element verwenden, das am Anwendungsgateway angehängt ist. Verwenden Sie den DNS-Namen des Anwendungsgateways, um einen CNAME-Datensatz zu erstellen, der die beiden Webanwendungen auf diesen DNS-Namen verweist. Wir empfehlen die Verwendung von A-Datensätzen nicht, da sich der VIP beim Neustart des Anwendungsgateways ändern kann.
Get-AzPublicIpAddress -ResourceGroupName appgw-RG -Name publicIP01
Name : publicIP01
ResourceGroupName : appgw-RG
Location : westus
Id : /subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/publicIPAddresses/publicIP01
Etag : W/"00000d5b-54ed-4907-bae8-99bd5766d0e5"
ResourceGuid : 00000000-0000-0000-0000-000000000000
ProvisioningState : Succeeded
Tags :
PublicIpAllocationMethod : Dynamic
IpAddress : xx.xx.xxx.xx
PublicIpAddressVersion : IPv4
IdleTimeoutInMinutes : 4
IpConfiguration : {
"Id": "/subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/applicationGateways/appgwtest/frontendIP
Configurations/frontend1"
}
DnsSettings : {
"Fqdn": "00000000-0000-xxxx-xxxx-xxxxxxxxxxxx.cloudapp.net"
}
Nächste Schritte
Weitere Informationen zur Härtung der Sicherheit Ihrer Webanwendungen mit der Web Application Firewall über Application Gateway finden Sie in der Übersicht der Web Application Firewall.