Konfigurowanie wersji zasad protokołu TLS i mechanizmów szyfrowania w usłudze Application Gateway

Dowiedz się, jak skonfigurować wersje zasad TLS/SSL i zestawy szyfrowania w usłudze Application Gateway. Możesz wybrać z listy wstępnie zdefiniowanych zasad, które zawierają różne konfiguracje wersji zasad TLS i włączone zestawy szyfrowania. Istnieje również możliwość zdefiniowania niestandardowych zasad protokołu TLS na podstawie wymagań.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Uwaga

Zalecamy używanie protokołu TLS 1.2 jako minimalnej wersji protokołu TLS w celu uzyskania lepszych zabezpieczeń w usłudze Application Gateway.

Uzyskiwanie dostępnych opcji protokołu TLS

Polecenie Get-AzApplicationGatewayAvailableSslOptions cmdlet zawiera listę dostępnych wstępnie zdefiniowanych zasad, dostępnych zestawów szyfrowania i wersji protokołu, które można skonfigurować. Poniższy przykład przedstawia przykładowe dane wyjściowe z uruchomienia polecenia cmdlet.

Ważne

Domyślne zasady protokołu TLS są ustawione na AppGwSslPolicy20220101 dla interfejsu API w wersji 2023-02-01 lub nowszej. Odwiedź stronę Omówienie zasad protokołu TLS, aby dowiedzieć się więcej.

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

Wyświetlanie wstępnie zdefiniowanych zasad protokołu TLS

Usługa Application Gateway zawiera wiele wstępnie zdefiniowanych zasad, których można użyć. Polecenie Get-AzApplicationGatewaySslPredefinedPolicy cmdlet pobiera te zasady. Każda zasada ma włączone różne wersje protokołów i zestawy szyfrowania. Te wstępnie zdefiniowane zasady mogą służyć do szybkiego konfigurowania zasad TLS w bramie aplikacji. Domyślnie opcja AppGwSslPolicy20150501 jest wybierana, jeśli nie zdefiniowano żadnych określonych zasad protokołu TLS.

Poniższe dane wyjściowe to przykład uruchamiania Get-AzApplicationGatewaySslPredefinedPolicypolecenia .

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

Konfigurowanie niestandardowych zasad protokołu TLS

Podczas konfigurowania niestandardowych zasad protokołu TLS należy przekazać następujące parametry: PolicyType, MinProtocolVersion, CipherSuite i ApplicationGateway. Jeśli próbujesz przekazać inne parametry, podczas tworzenia lub aktualizowania usługi Application Gateway wystąpi błąd. W poniższym przykładzie ustawiono niestandardowe zasady protokołu TLS w bramie aplikacji. Ustawia minimalną wersję protokołu na TLSv1_1 i włącza następujące zestawy szyfrowania:

  • 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

Ważne

  • Jeśli używasz niestandardowych zasad SSL w jednostce SKU usługi Application Gateway w wersji 1 (Standardowa lub WAF), upewnij się, że do listy dodano obowiązkowy szyfr "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256". Ten szyfr jest wymagany do włączenia metryk i rejestrowania w jednostce SKU usługi Application Gateway w wersji 1. Nie jest to obowiązkowe w przypadku jednostki SKU usługi Application Gateway w wersji 2 (Standard_v2 lub WAF_v2).
  • Zestawy szyfrowania "TLS_AES_128_GCM_SHA256" i "TLS_AES_256_GCM_SHA384" z protokołem TLSv1.3 nie są dostosowywalne i uwzględniane domyślnie podczas ustawiania zasad CustomV2 z minimalną wersją protokołu TLS w wersji 1.2 lub 1.3. Te dwa zestawy szyfrowania nie będą wyświetlane w danych wyjściowych Get Details z wyjątkiem portalu.

Aby ustawić minimalną wersję protokołu na 1.3, należy użyć następującego polecenia:

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

Na tej ilustracji wyjaśniono sposób użycia zasad CustomV2 z minimalnymi wersjami protokołu 1.2 i 1.3.

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

Tworzenie bramy aplikacji ze wstępnie zdefiniowanymi zasadami PROTOKOŁU TLS

Podczas konfigurowania wstępnie zdefiniowanych zasad PROTOKOŁU TLS należy przekazać następujące parametry: PolicyType, PolicyName i ApplicationGateway. Jeśli próbujesz przekazać inne parametry, podczas tworzenia lub aktualizowania usługi Application Gateway wystąpi błąd.

Poniższy przykład tworzy nową bramę aplikacji ze wstępnie zdefiniowanymi zasadami PROTOKOŁU TLS.

# 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

Aktualizowanie istniejącej bramy aplikacji przy użyciu wstępnie zdefiniowanych zasad protokołu TLS

Aby ustawić niestandardowe zasady protokołu TLS, przekaż następujące parametry: PolicyType, MinProtocolVersion, CipherSuite i ApplicationGateway. Aby ustawić wstępnie zdefiniowane zasady protokołu TLS, przekaż następujące parametry: PolicyType, PolicyName i ApplicationGateway. Jeśli próbujesz przekazać inne parametry, podczas tworzenia lub aktualizowania usługi Application Gateway wystąpi błąd.

Uwaga

Użycie nowych wstępnie zdefiniowanych lub niestandardowych zasad w wersji 2 zwiększa poziom zabezpieczeń protokołu SSL i wydajności całej bramy (zasady SSL i profil SSL). W związku z tym zarówno stare, jak i nowe zasady nie mogą współistnieć. Musisz użyć dowolnej ze starszych wstępnie zdefiniowanych lub niestandardowych zasad w bramie, jeśli istnieją klienci wymagający starszej wersji protokołu TLS lub szyfrowania (na przykład TLS w wersji 1.0).

W poniższym przykładzie istnieją przykłady kodu dla zasad niestandardowych i wstępnie zdefiniowanych zasad. Usuń komentarz z zasad, których chcesz użyć.

# 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

Następne kroki

Odwiedź stronę Omówienie przekierowania usługi Application Gateway, aby dowiedzieć się, jak przekierowywać ruch HTTP do punktu końcowego HTTPS.

Zapoznaj się z konfigurowaniem zasad protokołu SSL specyficznych dla odbiornika podczas konfigurowania zasad specyficznych dla odbiornika SSL za pośrednictwem portalu