Configurare le versioni dei criteri TLS e le suite di cifratura su Application Gateway

Informazioni su come configurare le versioni dei criteri TLS/SSL e le suite di crittografia nell'Application Gateway. È possibile selezionare un elenco di criteri predefiniti che contengono configurazioni diverse delle versioni dei criteri TLS e dei pacchetti di crittografia abilitati. È anche possibile definire criteri TLS personalizzati in base ai requisiti.

Importante

È consigliabile usare TLS 1.2 come versione minima del protocollo TLS per una maggiore sicurezza nel gateway applicazione. A partire dal 31 agosto 2025, tutti i client e i server back-end che interagiscono con il Gateway applicazione di Azure devono usare Transport Layer Security (TLS) 1.2 o versione successiva, perché il supporto per TLS 1.0 e 1.1 verrà sospeso.

Annotazioni

È 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.

Ottenere le opzioni TLS disponibili

Il Get-AzApplicationGatewayAvailableSslOptions cmdlet fornisce un elenco dei criteri predefiniti disponibili, delle suite di crittografia disponibili e delle versioni del protocollo che possono essere configurate. Nell'esempio seguente viene illustrato un esempio di output dall'esecuzione del cmdlet.

Importante

I gateway creati con la versione API 2023-02-01 o successiva utilizzano AppGwSslPolicy202220101 come policy TLS predefinita. Il DefaultPolicy valore nell'output seguente riporta ancora AppGwSslPolicy20150501 perché il supporto di Azure PowerShell e interfaccia della riga di comando di Azure per il default aggiornato non è ancora disponibile. Per confermare il default in vigore per il tuo gateway, controlla la proprietà di sola defaultPredefinedSslPolicy lettura sulla risorsa. Per ulteriori informazioni, vedi panoramica delle policy TLS.

DefaultPolicy: AppGwSslPolicy20150501
PredefinedPolicies:
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20150501
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20170401
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20170401S
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20220101
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20220101S

AvailableCipherSuites:
    TLS_AES_128_GCM_SHA256
    TLS_AES_256_GCM_SHA384
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_256_GCM_SHA384
    TLS_RSA_WITH_AES_128_GCM_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA256
    TLS_RSA_WITH_AES_128_CBC_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA
    TLS_RSA_WITH_AES_128_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_3DES_EDE_CBC_SHA
    TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA

AvailableProtocols:
    TLSv1_0
    TLSv1_1
    TLSv1_2
    TLSv1_3

Elenca le politiche TLS predefinite

Application Gateway offre più policy predefinite che puoi utilizzare. Il Get-AzApplicationGatewaySslPredefinedPolicy cmdlet recupera questi criteri. Ogni criterio ha versioni del protocollo e suite di crittografia diverse abilitate. Usa queste policy predefinite per configurare rapidamente una policy TLS sul tuo gateway applicativo. La policy predefinita applicata quando non si definisce una specifica policy TLS dipende dalla versione API utilizzata per creare il gateway: i gateway creati con la versione API 2023-02-01 o successiva predefinino AppGwSslPolicy202220101, mentre i gateway creati con versioni API precedenti predefinito AppGwSslPolicy20150501. Poiché il supporto per TLS 1.0 e 1.1 è terminato il 31 agosto 2025, si utilizza una policy predefinita del 2022 (AppGwSslPolicy20220101 o AppGwSslPolicy20220101S) oppure una policy CustomV2 affinché client e server backend negozino TLS 1.2 o superiore. Se hai bisogno di un insieme specifico di suite di cifrature, puoi usare invece AppGwSslPolicy20170401S . Le politiche predefinite del 2022 e la politica CustomV2 sono disponibili solo sullo SKU v2 (Standard_v2 o WAF_v2).

L'output seguente è un esempio di esecuzione di Get-AzApplicationGatewaySslPredefinedPolicy.

Name: AppGwSslPolicy20150501
MinProtocolVersion: TLSv1_0
CipherSuites:
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_256_GCM_SHA384
 ...
Name: AppGwSslPolicy20170401
MinProtocolVersion: TLSv1_1
CipherSuites:
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
...

Configurare un criterio TLS personalizzato

Quando configuri una policy TLS personalizzata, fornisci i seguenti parametri: PolicyType, MinProtocolVersion, CipherSuite, e ApplicationGateway. Se provi a fornire altri parametri, ricevi un errore quando crei o aggiorni il Gateway applicativo. Nell'esempio seguente viene impostata una politica TLS personalizzata in un gateway applicativo. Imposta la versione minima del protocollo su TLSv1_2 e abilita le suite di crittografia seguenti:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
# get an application gateway resource
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroup AdatumAppGatewayRG

# set the TLS policy on the application gateway
Set-AzApplicationGatewaySslPolicy -ApplicationGateway $gw -PolicyType Custom -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"

# validate the TLS policy locally
Get-AzApplicationGatewaySslPolicy -ApplicationGateway $gw

# update the gateway with validated TLS policy
Set-AzApplicationGateway -ApplicationGateway $gw

Importante

Le suite TLS_AES_128_GCM_SHA256 cifrari e TLS_AES_256_GCM_SHA384 con TLSv1.3 non sono personalizzabili e sono incluse di default quando si imposta una policy CustomV2 con una versione TLS minima di 1.2 o 1.3. Queste due suite di cifrari non compaiono nell'output di Get Details, ad eccezione di Portal.

Per impostare la versione minima del protocollo su 1.3, è necessario usare il comando seguente:

Set-AzApplicationGatewaySslPolicy -ApplicationGateway $AppGW -MinProtocolVersion TLSv1_3 -PolicyType CustomV2 -CipherSuite @()

Questa figura illustra ulteriormente l'utilizzo dei criteri CustomV2 con le versioni minime del protocollo 1.2 e 1.3.

Diagramma che mostra l'uso del parametro ciphersuite per i criteri CustomV2.

Creare un gateway applicazione con criteri TLS predefiniti

Quando si configura un criterio TLS predefinito, si passano i parametri seguenti: PolicyType, PolicyName e ApplicationGateway. Se si tenta di passare altri parametri, viene visualizzato un errore durante la creazione o l'aggiornamento del gateway applicazione.

Nell'esempio seguente viene creato un nuovo application gateway con i criteri TLS predefiniti.

# Create a resource group
$rg = New-AzResourceGroup -Name ContosoRG -Location "East US"

# Create a subnet for the application gateway
$subnet = New-AzVirtualNetworkSubnetConfig -Name subnet01 -AddressPrefix 10.0.0.0/24

# Create a virtual network with a 10.0.0.0/16 address space
$vnet = New-AzVirtualNetwork -Name appgwvnet -ResourceGroupName $rg.ResourceGroupName -Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $subnet

# Retrieve the subnet object for later use
$subnet = $vnet.Subnets[0]

# Create a public IP address (v2 requires a Standard SKU, static public IP address)
$publicip = New-AzPublicIpAddress -ResourceGroupName $rg.ResourceGroupName -name publicIP01 -location "East US" -AllocationMethod Static -Sku Standard

# Create an ip configuration object
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name gatewayIP01 -Subnet $subnet

# Create a backend pool for backend web servers
$pool = New-AzApplicationGatewayBackendAddressPool -Name pool01 -BackendIPAddresses 134.170.185.46, 134.170.188.221,134.170.185.50

# Define the backend http settings to be used.
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name poolsetting01 -Port 80 -Protocol Http -CookieBasedAffinity Enabled

# Create a new port for TLS
$fp = New-AzApplicationGatewayFrontendPort -Name frontendport01  -Port 443

# Upload an existing pfx certificate for TLS offload
$password = ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force
$cert = New-AzApplicationGatewaySslCertificate -Name cert01 -CertificateFile C:\folder\contoso.pfx -Password $password

# Create a frontend IP configuration for the public IP address
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name fipconfig01 -PublicIPAddress $publicip

# Create a new listener with the certificate, port, and frontend ip.
$listener = New-AzApplicationGatewayHttpListener -Name listener01  -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SslCertificate $cert

# Create a new rule for backend traffic routing (rule priority is required)
$rule = New-AzApplicationGatewayRequestRoutingRule -Name rule01 -RuleType Basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool -Priority 100

# Define the size of the application gateway
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2 -Capacity 2

# Configure the TLS policy to use a different predefined policy
$policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20220101S

# Create the application gateway.
$appgw = New-AzApplicationGateway -Name appgwtest -ResourceGroupName $rg.ResourceGroupName -Location "East US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig  -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslCertificates $cert -SslPolicy $policy

Aggiornare un gateway applicativo esistente con una policy TLS predefinita

Per impostare criteri TLS personalizzati, passare i parametri seguenti: PolicyType, MinProtocolVersion, CipherSuite e ApplicationGateway. Per impostare un criterio TLS predefinito, passare i parametri seguenti: PolicyType, PolicyName e ApplicationGateway. Se si tenta di passare altri parametri, viene visualizzato un errore durante la creazione o l'aggiornamento del gateway applicazione.

Annotazioni

Sia le politiche SSL legacy che quelle nuove (Predefinite 2022 o CustomV2) non possono coesistere sullo stesso gateway. Se qualche client richiede cifrari che solo le policy legacy offrono, usa una policy legacy predefinita o personalizzata attraverso il gateway. Poiché il supporto per TLS 1.0 e 1.1 è terminato il 31 agosto 2025, le policy legacy non negoziano più quelle versioni: le policy predefinite 20150501 e 20170401 sono state interrotte e la policy Custom legacy supporta solo TLS 1.2. Per dettagli, vedi panoramica delle politiche TLS.

Nell'esempio seguente sono disponibili esempi di codice per criteri personalizzati e criteri predefiniti. Rimuovere il commento dal criterio che si vuole usare.

# You have to change these parameters to match your environment.
$AppGWname = "YourAppGwName"
$RG = "YourResourceGroupName"

$AppGw = get-Azapplicationgateway -Name $AppGWname -ResourceGroupName $RG

# Choose either custom policy or predefined policy and uncomment the one you want to use.

# TLS Custom Policy
# Set-AzApplicationGatewaySslPolicy -PolicyType Custom -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA256" -ApplicationGateway $AppGw

# TLS Predefined Policy
# Set-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20220101S" -ApplicationGateway $AppGW

# Update AppGW
# The TLS policy options are not validated or updated on the Application Gateway until this cmdlet is executed.
$SetGW = Set-AzApplicationGateway -ApplicationGateway $AppGW

Passaggi successivi

Per informazioni su come reindirizzare il traffico HTTP a un endpoint HTTPS, vedere Panoramica del reindirizzamento nel gateway applicazione.

Vedere Configurazione di criteri SSL specifici del listener durante la configurazione di criteri specifici del listener SSL tramite il portale