Application Gateway で TLS ポリシーのバージョンと暗号スイートを構成する

Application Gateway で TLS/SSL ポリシーのバージョンと暗号スイートを構成する方法について説明します。 TLS ポリシー バージョンと有効な暗号スイートのさまざまな構成を含む定義済みのポリシーの一覧から選択できます。 また、要件に基づいて カスタム TLS ポリシー を定義することもできます。

Von Bedeutung

Application Gateway のセキュリティを強化するために、TLS 1.2 を TLS プロトコルの最小バージョンとして使用することをお勧めします。 2025 年 8 月 31 日以降、Azure Application Gateway とやり取りするすべてのクライアントとバックエンド サーバーは、TLS 1.0 および 1.1 のサポートが中止されるため、トランスポート層セキュリティ (TLS) 1.2 以降を使用する必要があります。

Azure Az PowerShell モジュールを使用して Azure と対話することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「 Azure PowerShell を AzureRM から Az に移行する」を参照してください。

使用可能な TLS オプションを取得する

Get-AzApplicationGatewayAvailableSslOptions コマンドレットは、使用可能な定義済みポリシー、使用可能な暗号スイート、および構成できるプロトコル バージョンの一覧を提供します。 次の例は、コマンドレットの実行からの出力例を示しています。

Von Bedeutung

APIバージョン2023-02-01以降で作成されたゲートウェイは、デフォルトのTLSポリシーとして AppGwSslPolicy20220101 を使用します。 以下の出力のDefaultPolicy値は、更新されたデフォルトAzure PowerShellおよび Azure CLI サポートがまだ利用できないため、まだ AppGwSslPolicy20150501 を報告しています。 ゲートウェイのデフォルトが有効かどうかを確認するには、リソースの読み取り専用 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 ポリシーを一覧表示する

Application Gatewayには複数の事前定義されたポリシーが付属しており、それらを利用できます。 Get-AzApplicationGatewaySslPredefinedPolicy コマンドレットは、これらのポリシーを取得します。 各ポリシーでは、異なるプロトコル バージョンと暗号スイートが有効になっています。 これらの事前定義されたポリシーを使って、アプリケーションゲートウェイ上でTLSポリシーを素早く設定しましょう。 特定のTLSポリシーを定義していない場合に適用されるデフォルトポリシーは、ゲートウェイ作成に使われるAPIバージョンによって異なります。APIバージョン2023-02-01以降で作成されたゲートウェイはデフォルトで AppGwSslPolicy20220101となり、それ以前のAPIバージョンで作成されたゲートウェイはデフォルトで AppGwSslPolicy20150501となります。 TLS 1.0および1.1のサポートは2025年8月31日に終了したため、クライアントとバックエンドサーバーがTLS 1.2以上のものを交渉するように、2022年の事前定義ポリシー(AppGwSslPolicy20220101またはAppGwSslPolicy20220101S)またはCustomV2ポリシーを使用してください。 特定の暗号スイートが必要な場合は、 代わりに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ポリシーを設定する際は、 PolicyTypeMinProtocolVersionCipherSuiteApplicationGatewayのパラメータを指定します。 他のパラメータを入力しようとすると、アプリケーションゲートウェイの作成や更新時にエラーが発生します。 次の例では、アプリケーション ゲートウェイにカスタム 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

Von Bedeutung

TLSv1.3のCipher suite TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384 はカスタマイズできず、最低TLSバージョン1.2または1.3のCustomV2ポリシーを設定する際にデフォルトで含まれます。 これら2つの暗号スイートは、Portalを除き「詳細取得」出力には表示されません。

最小プロトコル バージョンを 1.3 に設定するには、次のコマンドを使用する必要があります。

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

この図では、最小プロトコル バージョン 1.2 および 1.3 での CustomV2 ポリシーの使用方法についてさらに説明します。

CustomV2 ポリシーの暗号スイート パラメーターの使用を示す図。

定義済みの TLS ポリシーを使用してアプリケーション ゲートウェイを作成する

定義済み TLS ポリシーを構成する場合は、次のパラメーターを渡します: PolicyType、PolicyName、および ApplicationGateway。 他のパラメーターを渡そうとすると、Application Gateway を作成または更新するときにエラーが発生します。

次の例では、定義済みの 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 (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

定義済みの TLS ポリシーを使用して既存のアプリケーション ゲートウェイを更新する

カスタム TLS ポリシーを設定するには、 PolicyTypeMinProtocolVersionCipherSuiteApplicationGateway の各パラメーターを渡します。 定義済みの TLS ポリシーを設定するには、次のパラメーターを渡します: PolicyTypePolicyNameおよび ApplicationGateway。 他のパラメーターを渡そうとすると、Application Gateway を作成または更新するときにエラーが発生します。

レガシーと新(2022年版PreDefined またはCustomV2)の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 エンドポイントにリダイレクトする方法については、 Application Gateway のリダイレクトの概要に関するページを参照してください。

ポータルを使用して SSL リスナー固有のポリシーを設定する際のリスナー固有の SSL ポリシーの設定を確認する