PowerShell を使用して Application Gateway との相互認証を構成する

この記事では、PowerShell を使用して Application Gateway で相互認証を構成する方法について説明します。 相互認証とは、Application Gateway にアップロードしたクライアント証明書を使用して、要求を送信するクライアントを Application Gateway が認証することです。

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

注

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

この記事では、Azure PowerShell モジュール バージョン 1.0.0 以降が必要です。 バージョンを確認するには、Get-Module -ListAvailable Az を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount を実行して Azure との接続を作成することも必要です。

開始する前に

Application Gateway との相互認証を構成するには、ゲートウェイにアップロードするクライアント証明書が必要です。 クライアント証明書は、クライアントが Application Gateway に提示する証明書を検証するために使用されます。 テスト目的で、自己署名証明書を使用してもかまいません。 ただし、運用ワークロードでは管理が難しく、完全にセキュリティで保護されていないため、これはお勧めできません。

特にアップロードできるクライアント証明書の種類の詳細については、「 Application Gateway との相互認証の概要」を参照してください。

リソース グループを作成する

まず、サブスクリプションに新しいリソース グループを作成します。

$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}

仮想ネットワークを作成する

Application Gateway を配置するための仮想ネットワークをデプロイします。

$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet
$vnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -VirtualNetwork $vnet

パブリック IP を作成する

Application Gateway で使用するパブリック IP を作成します。

$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard

Application Gateway の IP 構成を作成する

IP 構成とフロントエンド ポートを作成します。

$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName  -Port 443

フロントエンド TLS/SSL の構成

Application Gateway の TLS/SSL 証明書を構成します。

$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password

クライアント認証を構成する

Application Gateway でクライアント認証を構成します。 ここで使用する信頼されたクライアント CA 証明書チェーンを抽出する方法の詳細については、 信頼されたクライアント CA 証明書チェーンを抽出する方法を参照してください。

重要

クライアント CA 証明書チェーン全体を 1 つのファイルにアップロードし、ファイルごとにチェーンを 1 つだけアップロードしてください。 アップロードされる各ファイルの最大サイズは 25 KB 以下である必要があります。

注

TLS 1.2 は 2025 年 8 月 31 日から義務付けられますので、相互認証で TLS 1.2 を使用することをお勧めします。

$clientCertFilePath = $basedir + "/ScenarioTests/Data/TrustedClientCertificate.cer"
$trustedClient01 = New-AzApplicationGatewayTrustedClientCertificate -Name $trustedClientCert01Name -CertificateFile $clientCertFilePath
$sslPolicy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401S"
$clientAuthConfig = New-AzApplicationGatewayClientAuthConfiguration -VerifyClientCertIssuerDN
$sslProfile01 = New-AzApplicationGatewaySslProfile -Name $sslProfile01Name -SslPolicy $sslPolicy -ClientAuthConfiguration $clientAuthConfig -TrustedClientCertificates $trustedClient01
$listener = New-AzApplicationGatewayHttpListener -Name $listenerName -Protocol Https -SslCertificate $sslCert -FrontendIPConfiguration $fipconfig -FrontendPort $port -SslProfile $sslProfile01

バックエンド プールと設定を構成する

Application Gateway のバックエンド プールと設定を設定します。 必要に応じて、エンド ツー エンドの TLS/SSL 暗号化用にバックエンドの信頼されたルート証明書を設定します。

$certFilePath = $basedir + "/ScenarioTests/Data/ApplicationGatewayAuthCert.cer"
$trustedRoot = New-AzApplicationGatewayTrustedRootCertificate -Name $trustedRootCertName -CertificateFile $certFilePath
$pool = New-AzApplicationGatewayBackendAddressPool -Name $poolName -BackendIPAddresses www.microsoft.com, www.bing.com
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name $poolSettingName -Port 443 -Protocol Https -CookieBasedAffinity Enabled -PickHostNameFromBackendAddress -TrustedRootCertificate $trustedRoot

ルールを構成する

Application Gateway でルールを設定します。

$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

将来のリスナー用に既定の TLS/SSL ポリシーを設定する

相互認証の設定中に、リスナー固有の TLS/SSL ポリシーを設定しました。 この手順では、必要に応じて、作成する将来のリスナーの既定の TLS/SSL ポリシーを設定できます。

$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"

アプリケーション ゲートウェイの作成

作成したすべてのものを使用して、Application Gateway をデプロイします。

$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname -Zone 1,2 -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $port -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslPolicy $sslPolicyGlobal -TrustedRootCertificate $trustedRoot -AutoscaleConfiguration $autoscaleConfig -TrustedClientCertificates $trustedClient01 -SslProfiles $sslProfile01 -SslCertificates $sslCert

リソースをクリーンアップする

必要がなくなったら、Remove-AzResourceGroup を使用して、リソース グループ、アプリケーション ゲートウェイ、およびすべての関連リソースを削除します。

Remove-AzResourceGroup -Name $rgname

期限切れのクライアント CA 証明書を更新する

クライアント CA 証明書の有効期限が切れている場合は、次の手順でゲートウェイの証明書を更新できます。

  1. Azure にサインインする
    Connect-AzAccount
    Select-AzSubscription -Subscription "<sub name>"
    
  2. Application Gateway の構成を取得する
    $gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
    
  3. ゲートウェイから信頼されたクライアント証明書を削除する
    Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
    
  4. ゲートウェイに新しい証明書を追加する
    Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
    
  5. 新しい証明書でゲートウェイを更新する
    Set-AzApplicationGateway -ApplicationGateway $gateway
    

次のステップ