次の方法で共有


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 をローカルで実行している場合、Login-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

フロントエンド SSL の構成

Application Gateway の 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 つだけアップロードしてください。

TLS 1.2 は今後も必須となるため、相互認証で 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 のバックエンド プールと設定を設定します。 必要に応じて、エンド ツー エンド 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

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

相互認証の設定中にリスナー固有の SSL ポリシーを設定しました。 この手順では、必要に応じて、作成する将来のリスナーの既定の 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
    

次のステップ