Configuración de versiones de directivas TLS y conjuntos de cifrado en Application Gateway

Aprenda a configurar versiones de directivas TLS/SSL y conjuntos de cifrado en Application Gateway. Puede seleccionar en una lista de directivas predefinidas que contienen diferentes configuraciones de las versiones de directivas TLS y conjuntos de cifrado habilitados. También tiene la posibilidad de definir una directiva TLS personalizada según sus requisitos.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Nota:

Se recomienda usar TLS 1.2 como versión mínima del protocolo TLS para mejorar la seguridad en Application Gateway.

Obtención de las opciones TLS disponibles

El cmdlet Get-AzApplicationGatewayAvailableSslOptions proporciona una lista de directivas predefinidas y conjuntos de cifrado disponibles, y de versiones de protocolo que se pueden configurar. El ejemplo siguiente muestra una salida de ejemplo de la ejecución del cmdlet.

Importante

La directiva TLS predeterminada se establece en AppGwSslPolicy20220101 para las versiones de API 2023-02-01 o posteriores. Visite la información general de la directiva TLS para obtener más información.

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

Listado de directivas TLS predefinidas

Application Gateway incluye varias directivas predefinidas que se pueden utilizar. El cmdlet Get-AzApplicationGatewaySslPredefinedPolicy permite recuperar estas directivas. Cada directiva tiene diferentes versiones de protocolo y conjuntos de cifrado habilitados. Estas directivas predefinidas se pueden utilizar para configurar rápidamente una directiva TLS en Application Gateway. De forma predeterminada, se selecciona AppGwSslPolicy20150501 si no se ha definido ninguna directiva TLS específica.

La siguiente salida es un ejemplo de ejecución de 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
...

Configuración de una directiva TLS personalizada

Cuando configura una directiva TLS personalizada, pasa los parámetros siguientes: PolicyType, MinProtocolVersion, CipherSuite y ApplicationGateway. Si intenta pasar otros parámetros, obtiene un error cuando crea o actualiza Application Gateway. En el ejemplo siguiente se establece una directiva TLS personalizada en una instancia de Application Gateway. Establece la versión mínima del protocolo en TLSv1_1 y habilita los siguientes conjuntos de cifrado:

  • 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_1 -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

  • Si usa una directiva SSL personalizada en la SKU de Application Gateway v1 (Estándar o WAF), asegúrese de agregar el cifrado obligatorio "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" a la lista. Este cifrado es necesario para habilitar las métricas y el registro en la SKU de Application Gateway v1. No es obligatorio para la SKU de Application Gateway v2 (Standard_v2 o WAF_v2).
  • Los conjuntos de cifrado "TLS_AES_128_GCM_SHA256" and "TLS_AES_256_GCM_SHA384" con TLSv1.3 no son personalizables ni se incluyen de forma predeterminada al establecer una directiva Personalizadav2 con una versión mínima de TLS de 1.2 o 1.3. Estos dos conjuntos de cifrado no aparecerán en la salida de Obtener detalles, con una excepción de Azure Portal.

Para establecer la versión mínima del protocolo en 1.3, debe usar el siguiente comando:

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

En esta ilustración se explica aún más el uso de la directiva de CustomV2 con las versiones mínimas del protocolo 1.2 y 1.3.

Diagram that shows use of ciphersuite parameter for the CustomV2 policy.

Creación de una puerta de enlace de aplicaciones con una directiva TLS predefinida

Cuando configura una directiva TLS predefinida, pasa los parámetros siguientes: PolicyType, PolicyName y ApplicationGateway. Si intenta pasar otros parámetros, obtiene un error cuando crea o actualiza Application Gateway.

En el ejemplo siguiente se crea una nueva puerta de enlace de aplicaciones con una directiva TLS predefinida.

# 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
$publicip = New-AzPublicIpAddress -ResourceGroupName $rg.ResourceGroupName -name publicIP01 -location "East US" -AllocationMethod Dynamic

# 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 = New-AzApplicationGatewayRequestRoutingRule -Name rule01 -RuleType Basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

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

# Configure the TLS policy to use a different pre-defined policy
$policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20170401S

# 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

Actualización de una instancia de Application Gateway existente con una directiva TLS predefinida

Para establecer una directiva TLS personalizada, pase los parámetros siguientes: PolicyType, MinProtocolVersion, CipherSuite y ApplicationGateway. Para establecer una directiva TLS predefinida, pase los parámetros siguientes: PolicyType, PolicyName y ApplicationGateway. Si intenta pasar otros parámetros, obtiene un error cuando crea o actualiza Application Gateway.

Nota:

El uso de una nueva directiva Predefinida o Personalizadav2 mejora la seguridad y el rendimiento de SSL para toda la puerta de enlace (directiva SSL y perfil SSL). Por lo tanto, las directivas antiguas y nuevas no pueden coexistir. Debe usar cualquiera de las directivas predefinidas o personalizadas anteriores en la puerta de enlace, en caso de que haya clientes que requieran versiones o cifrados de TLS anteriores (por ejemplo, TLS v1.0).

En el ejemplo siguiente, hay ejemplos de código para la directiva personalizada y la directiva predefinida. Quite la marca de comentario de la directiva que desea usar.

# 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 "AppGwSslPolicy20170401S" -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

Pasos siguientes

Visite Introducción a la redirección de Application Gateway para aprender a redirigir el tráfico HTTP a un punto de conexión HTTPS.

Consulte la configuración de directivas SSL específicas del cliente de escucha en la configuración de una directiva específica del cliente de escucha SSL a través del Portal