了解如何在应用程序网关上配置 TLS/SSL 策略版本和密码套件。 可以从包含不同配置 TLS 策略版本和已启用密码套件的预定义策略列表中选择。 还可以根据要求定义 自定义 TLS 策略 。
Important
建议使用 TLS 1.2 作为最低 TLS 协议版本,以提高应用程序网关的安全性。 从 2025 年 8 月 31 日开始,与 Azure 应用程序网关交互的所有客户端和后端服务器必须使用传输层安全性 (TLS) 1.2 或更高版本,如对 TLS 1.0 和 1.1 的支持将会终止中所述。
Note
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
获取可用的 TLS 选项
该 Get-AzApplicationGatewayAvailableSslOptions cmdlet 提供一系列可用的预定义策略、可用的密码套件和可配置的协议版本。 以下示例演示运行 cmdlet 的示例输出。
Important
使用 API 版本 2023-02-01 或更高版本创建的网关默认使用 AppGwSslPolicy20220101 作为默认 TLS 策略。 以下输出中的 DefaultPolicy 值仍显示为 AppGwSslPolicy20150501,因为 Azure PowerShell 和 Azure CLI 目前尚不支持更新后的默认值。 要确认你的网关当前生效的默认值,请检查该资源上的只读 defaultPredefinedSslPolicy 属性。 更多信息请参见 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
列出预定义的 TLS 策略
应用网关自带多个预定义的策略可供使用。
Get-AzApplicationGatewaySslPredefinedPolicy cmdlet 会检索这些策略。 每个策略都启用了不同的协议版本和密码套件。 使用这些预定义的策略,快速在应用网关上配置TLS策略。 当你没有定义特定的TLS策略时,默认策略取决于用于创建网关的API版本:使用2023-02-01或更高版本创建的网关默认为 AppGwSslPolicy20220101,而使用较早API版本创建的网关默认为 AppGwSslPolicy20150501。 由于 TLS 1.0和1.1的支持已于2025年8月31日终止,建议使用2022年预定义策略(AppGwSslPolicy20220101 或 AppGwSslPolicy20220101S)或CustomV2策略,以便客户端和后端服务器协商TLS 1.2或更高版本。 如果你需要特定的密码套件,可以使用 AppGwSslPolicy20170401S 。 2022 年的预定义策略和 CustomV2 策略仅在 v2 SKU(Standard_v2 或 WAF_v2)上可用。
以下输出是运行 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
...
配置自定义 TLS 策略
配置自定义TLS策略时,请提供以下参数:PolicyType、MinProtocolVersionCipherSuite和ApplicationGateway。 如果你尝试提供其他参数,创建或更新应用网关时会报错。 以下示例在应用程序网关上设置自定义 TLS 策略。 它将最低协议版本设置为 TLSv1_2 并启用以下密码套件:
- 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
Important
TLSv1.3 的密码套件 TLS_AES_128_GCM_SHA256 和 TLS_AES_256_GCM_SHA384 不可自定义;当将最低 TLS 版本设置为 1.2 或 1.3 时,设置 CustomV2 策略会默认包含这些密码套件。 这两种密码套件除了Portal外,不会出现在获取详情输出中。
若要将最低协议版本设置为 1.3,必须使用以下命令:
Set-AzApplicationGatewaySslPolicy -ApplicationGateway $AppGW -MinProtocolVersion TLSv1_3 -PolicyType CustomV2 -CipherSuite @()
此图进一步说明了使用最低协议版本 1.2 和 1.3 的 CustomV2 策略。
使用预定义的 TLS 策略创建应用程序网关
配置预定义 TLS 策略时,传递以下参数:PolicyType、PolicyName 和 ApplicationGateway。 如果尝试传递其他参数,则创建或更新应用程序网关时会出现错误。
以下示例使用预定义的 TLS 策略创建新的应用程序网关。
# Create a resource group
$rg = New-AzResourceGroup -Name ContosoRG -Location "China North 2"
# 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 "China North 2" -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 "China North 2" -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 "China North 2" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslCertificates $cert -SslPolicy $policy
使用预定义的 TLS 策略更新现有应用程序网关
若要设置自定义 TLS 策略,请传递以下参数: PolicyType、 MinProtocolVersion、 CipherSuite 和 ApplicationGateway。 若要设置预定义的 TLS 策略,请传递以下参数: PolicyType、 PolicyName 和 ApplicationGateway。 如果尝试传递其他参数,则创建或更新应用程序网关时会出现错误。
Note
遗留和新(2022年预定义或自定义V2)SSL策略不能共存于同一个网关上。 如果有客户端需要只有遗留策略提供的密码,请在网关上使用遗留的预定义或自定义策略。 由于 TLS 1.0和1.1的支持于2025年8月31日终止,遗留政策不再协商这些版本:20150501和20170401预定义策略已停止,遗留自定义策略仅支持TLS 1.2。 详情请参见 TLS政策概述。
在以下示例中,自定义策略和预定义策略都有代码示例。 取消注释要使用的策略。
# 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
后续步骤
访问 应用程序网关重定向概述 ,了解如何将 HTTP 流量重定向到 HTTPS 终结点。
在通过门户设置特定于侦听器的 SSL 策略中查看如何设置特定于侦听器的 SSL 策略