Membuat gateway aplikasi dengan penghentian TLS menggunakan Azure PowerShell

Anda dapat menggunakan Azure PowerShell untuk membuat gateway aplikasi dengan sertifikat untuk penghentian TLS/SSL yang menggunakan rangkaian skala komputer virtual untuk server ujung belakang. Dalam contoh ini, rangkaian skala berisi dua instans komputer virtual yang ditambahkan ke kumpulan backend default dari gateway aplikasi.

Dalam artikel ini, Anda akan mempelajari cara:

  • Membuat sertifikat yang ditandatangani sendiri
  • Menyiapkan jaringan
  • Membuat gateway aplikasi dengan sertifikat
  • Membuat set skala komputer virtual dengan kumpulan ujung belakang default

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Artikel ini memerlukan modul Azure PowerShell versi 1.0.0 atau yang lebih baru. Jalankan Get-Module -ListAvailable Az untuk menemukan versinya. Jika Anda perlu peningkatan, lihat Instal modul Azure PowerShell. Jika Anda menjalankan PowerShell secara lokal, Anda juga harus menjalankan Login-AzAccount untuk membuat koneksi dengan Azure.

Membuat sertifikat yang ditandatangani sendiri

Untuk penggunaan produksi, Anda harus mengimpor sertifikat yang valid dan ditandatangani oleh penyedia tepercaya. Untuk artikel ini, Anda akan membuat sertifikat yang ditandatangani otomatis menggunakan New-SelfSignedCertificate. Anda dapat menggunakan Export-PfxCertificate dengan Thumbprint yang dihasilkan untuk mengekspor file pfx dari sertifikat.

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.contoso.com

Anda akan melihat hasil seperti berikut:

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint                                Subject
----------                                -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630  CN=www.contoso.com

Gunakan thumbprint untuk membuat file pfx:

$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText

Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

Buat grup sumber daya

Grup sumber daya adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure. Buat grup sumber daya Azure bernama myResourceGroupAG dengan New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

Membuat sumber daya jaringan

Konfigurasikan subnet untuk myBackendSubnet dan myAGSubnet menggunakan New-AzVirtualNetworkSubnetConfig. Buat jaringan virtual bernama myVNet menggunakan New-AzVirtualNetwork dengan konfigurasi subnet. Terakhir, buat alamat IP publik bernama myAGPublicIPAddress menggunakan New-AzPublicIpAddress. Sumber daya ini digunakan untuk menyediakan konektivitas jaringan ke gateway aplikasi dan sumber daya terkait.

$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

Membuat gateway aplikasi

Membuat konfigurasi IP dan port ujung depan

Kaitkan myAGSubnet yang sebelumnya Anda buat ke gateway aplikasi menggunakan New-AzApplicationGatewayIPConfiguration. Tetapkan myAGPublicIPAddress ke gateway aplikasi menggunakan New-AzApplicationGatewayFrontendIPConfig.

$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

Membuat kumpulan dan pengaturan backend

Buat kumpulan backend bernama appGatewayBackendPool untuk gateway aplikasi menggunakan New-AzApplicationGatewayBackendAddressPool. Konfigurasikan pengaturan untuk kumpulan backend menggunakan AzApplicationGatewayBackendHttpSettings-Baru.

$defaultPool = New-AzApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool

$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

Membuat listener dan aturan default

Pendengar diperlukan untuk mengaktifkan gateway aplikasi untuk merutekan lalu lintas dengan tepat ke kumpulan ujung belakang. Dalam contoh ini, Anda akan membuat listener dasar yang mendengarkan lalu lintas HTTPS di URL root.

Buat objek sertifikat menggunakan New-AzApplicationGatewaySslCertificate, lalu buat listener bernama mydefaultListener menggunakan New-AzApplicationGatewayHttpListener dengan konfigurasi frontend, port frontend, dan sertifikat yang Anda buat sebelumnya. Aturan diperlukan agar listener mengetahui kumpulan backend yang akan digunakan untuk lalu lintas yang masuk. Buat aturan dasar bernama rule1 menggunakan New-AzApplicationGatewayRequestRoutingRule.

$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

Membuat gateway aplikasi dengan sertifikat

Setelah sumber daya pendukung yang diperlukan dibuat, tentukan parameter untuk gateway aplikasi bernama myAppGateway menggunakan New-AzApplicationGatewaySku, lalu buat gateway aplikasi itu menggunakan New-AzApplicationGateway dengan sertifikat.

Membuat application gateway

$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

Buat kumpulan skala komputer virtual

Dalam contoh ini, Anda akan membuat kumpulan skala komputer virtual yang menyediakan server untuk kumpulan backend di gateway aplikasi. Anda menetapkan rangkaian skala ke kumpulan backend saat mengonfigurasi pengaturan 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

Instal 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

Uji gateway aplikasi

Anda bisa menggunakan Get-AzPublicIPAddress untuk mendapatkan alamat IP publik gateway aplikasi. Salin alamat IP publik, lalu tempelkan ke bilah alamat browser Anda.

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

Secure warning

Untuk menerima peringatan keamanan jika Anda menggunakan sertifikat yang ditandatangani sendiri, pilih Detail lalu Lanjutkan ke halaman web. Situs web IIS Anda yang aman kemudian akan ditampilkan seperti dalam contoh berikut:

Test base URL in application gateway

Membersihkan sumber daya

Jika tidak lagi diperlukan, hapus grup sumber daya, gateway aplikasi, dan semua sumber daya terkait menggunakan Remove-AzResourceGroup.

Remove-AzResourceGroup -Name myResourceGroupAG

Langkah berikutnya

Membuat gateway aplikasi yang meng-hosting beberapa situs web