Azure PowerShell で TLS 終端を使用してアプリケーション ゲートウェイを作成する
Azure PowerShell を使用して、バックエンド サーバーに仮想マシン スケール セットを使用する TLS または SSL 終端の証明書で、アプリケーション ゲートウェイを作成することができます。 この例では、アプリケーション ゲートウェイの既定のバックエンド プールに追加された 2 つの仮想マシン インスタンスがスケール セットに含まれています。
この記事では、次のことについて説明します。
- 自己署名証明書の作成
- ネットワークの設定
- 証明書でのアプリケーション ゲートウェイの作成
- 既定のバックエンド プールでの仮想マシン スケール セットの作成
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Note
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、「Azure PowerShell のインストール」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
この記事では、Azure PowerShell モジュール バージョン 1.0.0 以降が必要です。 バージョンを確認するには、Get-Module -ListAvailable Az
を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell をローカルで実行している場合、Login-AzAccount
を実行して Azure との接続を作成することも必要です。
自己署名証明書の作成
実際の運用では、信頼できるプロバイダーによって署名された有効な証明書をインポートする必要があります。 この記事では、New-SelfSignedCertificate を使用して、自己署名証明書を作成します。 Export-PfxCertificate と返されたサムプリントを使用して、pfx ファイルを証明書からエクスポートできます。
New-SelfSignedCertificate `
-certstorelocation cert:\localmachine\my `
-dnsname www.contoso.com
次のような結果が表示されます。
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my
Thumbprint Subject
---------- -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 CN=www.contoso.com
サムプリントを使用して、pfx ファイルを作成します。
$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText
Export-PfxCertificate `
-cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
-FilePath c:\appgwcert.pfx `
-Password $pwd
リソース グループを作成する
リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 New-AzResourceGroup を使用して myResourceGroupAG という名前の Azure リソース グループを作成します。
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
ネットワーク リソースを作成する
New-AzVirtualNetworkSubnetConfig を使用して、myBackendSubnet および myAGSubnet という名前のサブネットを構成します。 New-AzVirtualNetwork とサブネット構成を使用して、myVNet という名前の仮想ネットワークを作成します。 最後に、New-AzPublicIpAddress を使用して myAGPublicIPAddress という名前のパブリック IP アドレスを作成します。 こうしたリソースは、アプリケーション ゲートウェイとその関連リソースにネットワーク接続を提供するために使用されます。
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet `
-AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet `
-AddressPrefix 10.0.2.0/24
$vnet = New-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myVNet `
-AddressPrefix 10.0.0.0/16 `
-Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzPublicIpAddress `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myAGPublicIPAddress `
-AllocationMethod Static `
-Sku Standard
アプリケーション ゲートウェイの作成
IP 構成とフロントエンド ポートの作成
New-AzApplicationGatewayIPConfiguration を使用して、前に作成した myAGSubnet をアプリケーション ゲートウェイに関連付けます。 New-AzApplicationGatewayFrontendIPConfig を使用して、myAGPublicIPAddress をアプリケーション ゲートウェイに割り当てます。
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet=$vnet.Subnets[0]
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPConfig `
-PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myFrontendPort `
-Port 443
バックエンド プールと設定の作成
New-AzApplicationGatewayBackendAddressPool を使用して、アプリケーション ゲートウェイに対して appGatewayBackendPool という名前のバックエンド プールを作成します。 New-AzApplicationGatewayBackendHttpSettings を使用して、バックエンド プールの設定を構成します。
$defaultPool = New-AzApplicationGatewayBackendAddressPool `
-Name appGatewayBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 120
既定のリスナーとルールの作成
アプリケーション ゲートウェイがバックエンド プールに対して適切にトラフィックをルーティングするためにはリスナーが必要です。 この例では、ルート URL で HTTPS トラフィックをリッスンする基本的なリスナーを作成します。
New-AzApplicationGatewaySslCertificate を使用して証明書オブジェクトを作成してから、New-AzApplicationGatewayHttpListener と、フロントエンド構成、フロントエンド ポート、前に作成した証明書を使用して、mydefaultListener という名前のリスナーを作成します。 着信トラフィックに使用するバックエンド プールをリスナーが判断するには、ルールが必要です。 New-AzApplicationGatewayRequestRoutingRule を使用して、rule1 という名前の基本ルールを作成します。
$pwd = ConvertTo-SecureString `
-String "Azure123456!" `
-Force `
-AsPlainText
$cert = New-AzApplicationGatewaySslCertificate `
-Name "appgwcert" `
-CertificateFile "c:\appgwcert.pfx" `
-Password $pwd
$defaultlistener = New-AzApplicationGatewayHttpListener `
-Name mydefaultListener `
-Protocol Https `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $frontendport `
-SslCertificate $cert
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
-Name rule1 `
-RuleType Basic `
-HttpListener $defaultlistener `
-BackendAddressPool $defaultPool `
-BackendHttpSettings $poolSettings `
-priority 100
証明書でのアプリケーション ゲートウェイの作成
必要な関連リソースを作成したら、New-AzApplicationGatewaySku を使用して、myAppGateway という名前のアプリケーション ゲートウェイのパラメーターを指定し、New-AzApplicationGateway と証明書を使用して、それを作成します。
アプリケーション ゲートウェイの作成
$sku = New-AzApplicationGatewaySku `
-Name Standard_v2 `
-Tier Standard_v2 `
-Capacity 2
$appgw = New-AzApplicationGateway `
-Name myAppGateway `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $defaultPool `
-BackendHttpSettingsCollection $poolSettings `
-FrontendIpConfigurations $fipconfig `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners $defaultlistener `
-RequestRoutingRules $frontendRule `
-Sku $sku `
-SslCertificates $cert
仮想マシン スケール セットを作成する
この例では、アプリケーション ゲートウェイのバックエンド プールにサーバーを提供する仮想マシン スケール セットを作成します。 スケール セットは、IP 設定を構成するときにバックエンド プールに割り当てます。
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool `
-Name appGatewayBackendPool `
-ApplicationGateway $appgw
$ipConfig = New-AzVmssIpConfig `
-Name myVmssIPConfig `
-SubnetId $vnet.Subnets[1].Id `
-ApplicationGatewayBackendAddressPoolsId $backendPool.Id
$vmssConfig = New-AzVmssConfig `
-Location eastus `
-SkuCapacity 2 `
-SkuName Standard_DS2 `
-UpgradePolicyMode Automatic
Set-AzVmssStorageProfile $vmssConfig `
-ImageReferencePublisher MicrosoftWindowsServer `
-ImageReferenceOffer WindowsServer `
-ImageReferenceSku 2016-Datacenter `
-ImageReferenceVersion latest `
-OsDiskCreateOption FromImage
Set-AzVmssOsProfile $vmssConfig `
-AdminUsername azureuser `
-AdminPassword "Azure123456!" `
-ComputerNamePrefix myvmss
Add-AzVmssNetworkInterfaceConfiguration `
-VirtualMachineScaleSet $vmssConfig `
-Name myVmssNetConfig `
-Primary $true `
-IPConfiguration $ipConfig
New-AzVmss `
-ResourceGroupName myResourceGroupAG `
-Name myvmss `
-VirtualMachineScaleSet $vmssConfig
IIS のインストール
$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }
$vmss = Get-AzVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-Setting $publicSettings
Update-AzVmss `
-ResourceGroupName myResourceGroupAG `
-Name myvmss `
-VirtualMachineScaleSet $vmss
アプリケーション ゲートウェイのテスト
Get-AzPublicIPAddress を使用して、アプリケーション ゲートウェイのパブリック IP アドレスを取得できます。 そのパブリック IP アドレスをコピーし、ブラウザーのアドレス バーに貼り付けます。
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
自己署名証明書を使用した場合、セキュリティ警告を受け入れるには、そのまま [詳細] を選択し [Web ページへ移動] を選択します。 セキュリティで保護された IIS Web サイトは、次の例のように表示されます。
リソースをクリーンアップする
必要がなくなったら、Remove-AzResourceGroup を使用して、リソース グループ、アプリケーション ゲートウェイ、およびすべての関連リソースを削除します。
Remove-AzResourceGroup -Name myResourceGroupAG