Configurare l'autenticazione reciproca con il gateway applicazione tramite PowerShell
Questo articolo descrive come usare PowerShell per configurare l'autenticazione reciproca nel gateway applicazione. Autenticazione reciproca significa che il gateway applicazione autentica il client che invia la richiesta usando il certificato client caricato nel gateway applicazione.
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Questo articolo richiede il modulo Azure PowerShell 1.0.0 o versioni successive. Eseguire Get-Module -ListAvailable Az
per trovare la versione. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell. Se si esegue PowerShell in locale, è anche necessario eseguire Login-AzAccount
per creare una connessione con Azure.
Operazioni preliminari
Per configurare l'autenticazione reciproca con un gateway applicazione, è necessario un certificato client da caricare nel gateway. Il certificato client verrà usato per convalidare il certificato che il client presenterà al gateway applicazione. Per eseguire dei test, è possibile usare un certificato autofirmato. Tuttavia, questo non è consigliato per i carichi di lavoro di produzione, perché sono più difficili da gestire e non sono completamente sicuri.
Per maggiori informazioni, in particolare sul tipo di certificati client che è possibile caricare, vedere Panoramica dell'autenticazione reciproca con il gateway applicazione.
Creare un gruppo di risorse
Creare prima di tutto un nuovo gruppo di risorse nella sottoscrizione.
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
Creare una rete virtuale
Distribuire una rete virtuale in cui distribuire il gateway applicazione.
$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
Creare un indirizzo IP pubblico.
Creare un IP pubblico da usare con il gateway applicazione.
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard
Creare la configurazione IP del gateway applicazione
Creare le configurazioni IP e la porta front-end
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName -Port 443
Configurare SSL front-end
Configurare i certificati SSL per il gateway applicazione.
$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password
Configurare l'autenticazione dei client
Configurare l'autenticazione client nel gateway applicazione. Per altre informazioni su come estrarre catene di certificati CA client attendibili da usare qui, vedere come estrarre catene di certificati CA client attendibili.
Importante
Assicurarsi di caricare l'intera catena di certificati CA client in un file e una sola catena per ogni file.
Nota
È consigliabile usare TLS 1.2 con l'autenticazione reciproca, poiché TLS 1.2 sarà obbligatorio in futuro.
$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
Creare il pool e le impostazioni back-end
Configurare il pool back-end e le impostazioni per il gateway applicazione. Facoltativamente, impostare il certificato root attendibile del back-end per la crittografia SSL end-to-end.
$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
Configurare la regola
Configurare una regola nel gateway applicazione.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
Configurare i criteri SSL predefiniti per i listener futuri
È stato configurato un criterio SSL specifico del listener durante la configurazione dell'autenticazione reciproca. In questo passaggio, si possono facoltativamente impostare i criteri SSL predefiniti per i listener che verranno creati in futuro.
$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"
Creare il gateway applicazione
Usando tutti gli elementi creati in precedenza, distribuire il gateway applicazione.
$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
Pulire le risorse
Quando non sono più necessari, rimuovere il gruppo di risorse, il gateway applicazione e tutte le risorse correlate usando Remove-AzResourceGroup.
Remove-AzResourceGroup -Name $rgname
Rinnovare i certificati della CA client scaduti
Nel caso in cui il certificato della CA client sia scaduto, è possibile aggiornare il certificato nel gateway seguendo questa procedura:
- Accedere ad Azure
Connect-AzAccount Select-AzSubscription -Subscription "<sub name>"
- Configurazione del gateway applicazione
$gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
- Rimuovere il certificato client attendibile dal gateway
Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
- Aggiungere il nuovo certificato al gateway
Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
- Aggiornare il gateway con il nuovo certificato
Set-AzApplicationGateway -ApplicationGateway $gateway