Konfigurieren der gegenseitigen Authentifizierung in Application Gateway mit PowerShell
In diesem Artikel wird beschrieben, wie Sie PowerShell verwenden, um die gegenseitige Authentifizierung auf Ihrer Application Gateway-Instanz zu konfigurieren. Gegenseitige Authentifizierung bedeutet Folgendes: Application Gateway authentifiziert den Client, der die Anforderung sendet, indem das Clientzertifikat verwendet wird, das Sie auf die Application Gateway-Instanz hochladen.
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Für diesen Artikel ist Version 1.0.0 oder höher des Azure PowerShell-Moduls erforderlich. Führen Sie Get-Module -ListAvailable Az
aus, um die Version zu ermitteln. Wenn Sie ein Upgrade ausführen müssen, finden Sie unter Installieren des Azure PowerShell-Moduls Informationen dazu. Wenn Sie PowerShell lokal ausführen, müssen Sie auch Login-AzAccount
ausführen, um eine Verbindung mit Azure herzustellen.
Voraussetzungen
Zum Konfigurieren der gegenseitigen Authentifizierung über eine Application Gateway-Instanz benötigen Sie ein Clientzertifikat zum Hochladen auf das Gateway. Das Clientzertifikat wird verwendet, um das Zertifikat zu überprüfen, das vom Client für Application Gateway angegeben wird. Sie können zu Testzwecken ein selbstsigniertes Zertifikat verwenden. Dies wird jedoch nicht für Produktionsworkloads empfohlen, da sie schwieriger zu verwalten und nicht vollständig sicher sind.
Weitere Informationen, vor allem zur Art der Clientzertifikate, die Sie hochladen können, finden Sie unter Übersicht über die gegenseitige Authentifizierung mit Application Gateway.
Erstellen einer Ressourcengruppe
Erstellen Sie unter Ihrem Abonnement zunächst eine neue Ressourcengruppe.
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
Erstellen eines virtuellen Netzwerks
Stellen Sie ein virtuelles Netzwerk bereit, in dem Ihre Application Gateway-Instanz bereitgestellt werden kann.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet
$vnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -VirtualNetwork $vnet
Erstellen Sie eine öffentliche IP-Adresse.
Erstellen Sie eine öffentliche IP-Adresse für Ihre Application Gateway-Instanz.
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard
Erstellen der IP-Konfiguration für Application Gateway
Erstellen Sie die IP-Konfigurationen und den Front-End-Port.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName -Port 443
Konfigurieren von SSL für das Front-End
Konfigurieren Sie die SSL-Zertifikate für Ihre Application Gateway-Instanz.
$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password
Konfigurieren der Clientauthentifizierung
Konfigurieren Sie die Clientauthentifizierung auf Ihrer Application Gateway-Instanz. Weitere Informationen zum Extrahieren von vertrauenswürdigen ZS-Clientzertifikatketten für die Nutzung finden Sie unter Exportieren einer vertrauenswürdigen ZS-Clientzertifikatkette für die Clientauthentifizierung.
Wichtig
Achten Sie darauf, dass Sie die gesamte ZS-Clientzertifikatkette in einer Datei und nur eine Kette pro Datei hochladen.
Hinweis
Wir empfehlen Ihnen die Nutzung von TLS 1.2 mit gegenseitiger Authentifizierung, da TLS 1.2 in Zukunft vorgeschrieben sein wird.
$clientCertFilePath = $basedir + "/ScenarioTests/Data/TrustedClientCertificate.cer"
$trustedClient01 = New-AzApplicationGatewayTrustedClientCertificate -Name $trustedClientCert01Name -CertificateFile $clientCertFilePath
$sslPolicy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401S"
$clientAuthConfig = New-AzApplicationGatewayClientAuthConfiguration -VerifyClientCertIssuerDN
$sslProfile01 = New-AzApplicationGatewaySslProfile -Name $sslProfile01Name -SslPolicy $sslPolicy -ClientAuthConfiguration $clientAuthConfig -TrustedClientCertificates $trustedClient01
$listener = New-AzApplicationGatewayHttpListener -Name $listenerName -Protocol Https -SslCertificate $sslCert -FrontendIPConfiguration $fipconfig -FrontendPort $port -SslProfile $sslProfile01
Konfigurieren des Back-End-Pools und der zugehörigen Einstellungen
Richten Sie den Back-End-Pool und die zugehörigen Einstellungen für Ihre Application Gateway-Instanz ein. Richten Sie optional das vertrauenswürdige Stammzertifikat für das Back-End ein, um die End-to-End-SSL-Verschlüsselung zu ermöglichen.
$certFilePath = $basedir + "/ScenarioTests/Data/ApplicationGatewayAuthCert.cer"
$trustedRoot = New-AzApplicationGatewayTrustedRootCertificate -Name $trustedRootCertName -CertificateFile $certFilePath
$pool = New-AzApplicationGatewayBackendAddressPool -Name $poolName -BackendIPAddresses www.microsoft.com, www.bing.com
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name $poolSettingName -Port 443 -Protocol Https -CookieBasedAffinity Enabled -PickHostNameFromBackendAddress -TrustedRootCertificate $trustedRoot
Konfigurieren der Regel
Richten Sie eine Regel auf Ihrer Application Gateway-Instanz ein.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
Einrichten der SSL-Standardrichtlinie für zukünftige Listener
Sie haben beim Einrichten der gegenseitigen Authentifizierung eine listenerspezifische SSL-Richtlinie eingerichtet. In diesem Schritt können Sie optional die SSL-Standardrichtlinie für Listener festlegen, die Sie in Zukunft erstellen.
$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"
Erstellen des Anwendungsgateways
Stellen Sie Ihre Application Gateway-Instanz nun mit allen oben erstellten Komponenten bereit.
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname -Zone 1,2 -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $port -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslPolicy $sslPolicyGlobal -TrustedRootCertificate $trustedRoot -AutoscaleConfiguration $autoscaleConfig -TrustedClientCertificates $trustedClient01 -SslProfiles $sslProfile01 -SslCertificates $sslCert
Bereinigen von Ressourcen
Wenn Sie die Ressourcengruppe, das Anwendungsgateway und alle zugehörigen Ressourcen nicht mehr benötigen, entfernen Sie sie mit dem Befehl Remove-AzResourceGroup.
Remove-AzResourceGroup -Name $rgname
Verlängern abgelaufener ZS-Clientzertifikate
Falls Ihr ZS-Clientzertifikat abgelaufen ist, können Sie das Zertifikat auf Ihrem Gateway mit den folgenden Schritten aktualisieren:
- Anmelden bei Azure
Connect-AzAccount Select-AzSubscription -Subscription "<sub name>"
- Rufen Sie Ihre Application Gateway-Konfiguration ab.
$gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
- Entfernen Sie das vertrauenswürdige Clientzertifikat vom Gateway.
Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
- Fügen Sie das neue Zertifikat auf dem Gateway hinzu.
Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
- Aktualisieren Sie das Gateway mit dem neuen Zertifikat.
Set-AzApplicationGateway -ApplicationGateway $gateway