Creare un gateway applicazione con la terminazione SSL tramite Azure PowerShellCreate an application gateway with SSL termination using Azure PowerShell

È possibile usare Azure PowerShell per creare un gateway applicazione con un certificato per la terminazione SSL che usa un set di scalabilità di macchine virtuali per i server back-end.You can use Azure PowerShell to create an application gateway with a certificate for SSL termination that uses a virtual machine scale set for backend servers. In questo esempio il set di scalabilità contiene due istanze di macchine virtuali che vengono aggiunte al pool back-end predefinito del gateway applicazione.In this example, the scale set contains two virtual machine instances that are added to the default backend pool of the application gateway.

In questo articolo viene spiegato come:In this article, you learn how to:

  • Creare un certificato autofirmatoCreate a self-signed certificate
  • Configurare una reteSet up a network
  • Creare un gateway applicazione con il certificatoCreate an application gateway with the certificate
  • Creare un set di scalabilità di macchine virtuali con il pool back-end predefinitoCreate a virtual machine scale set with the default backend pool

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Questa esercitazione richiede il modulo Azure PowerShell 3.6 o versioni successive.This tutorial requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Se si esegue PowerShell in locale, è anche necessario eseguire Login-AzureRmAccount per creare una connessione con Azure.If you are running PowerShell locally, you also need to run Login-AzureRmAccount to create a connection with Azure.

Creare un certificato autofirmatoCreate a self-signed certificate

Per la produzione è necessario importare un certificato valido firmato da un provider attendibile.For production use, you should import a valid certificate signed by trusted provider. Per questa esercitazione viene creato un certificato autofirmato usando il comando New-SelfSignedCertificate.For this tutorial, you create a self-signed certificate using New-SelfSignedCertificate. È possibile usare Export-PfxCertificate con l'identificazione personale restituita per esportare un file pfx dal certificato.You can use Export-PfxCertificate with the Thumbprint that was returned to export a pfx file from the certificate.

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

L'output sarà simile al risultato seguente:You should see something like this result:

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

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

Usare l'identificazione personale per creare il file pfx:Use the thumbprint to create the pfx file:

$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText
Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

Creare un gruppo di risorseCreate a resource group

Un gruppo di risorse è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.A resource group is a logical container into which Azure resources are deployed and managed. Creare un gruppo di risorse di Azure denominato myResourceGroupAG con New-AzureRmResourceGroup.Create an Azure resource group named myResourceGroupAG with New-AzureRmResourceGroup.

New-AzureRmResourceGroup -Name myResourceGroupAG -Location eastus

Creare risorse di reteCreate network resources

Configurare le subnet denominate myBackendSubnet e myAGSubnet usando New-AzureRmVirtualNetworkSubnetConfig.Configure the subnets named myBackendSubnet and myAGSubnet using New-AzureRmVirtualNetworkSubnetConfig. Creare la rete virtuale denominata myVNet usando New-AzureRmVirtualNetwork con le configurazioni di subnet.Create the virtual network named myVNet using New-AzureRmVirtualNetwork with the subnet configurations. Creare infine l'indirizzo IP pubblico denominato myAGPublicIPAddress con New AzureRmPublicIpAddress.And finally, create the public IP address named myAGPublicIPAddress using New-AzureRmPublicIpAddress. Queste risorse vengono usate per fornire la connettività di rete al gateway applicazione e alle risorse associate.These resources are used to provide network connectivity to the application gateway and its associated resources.

$backendSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.0.2.0/24
$vnet = New-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzureRmPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Dynamic

Creare un gateway applicazioneCreate an application gateway

Creare le configurazioni IP e la porta front-endCreate the IP configurations and frontend port

Associare la subnet myAGSubnet creata in precedenza al gateway applicazione usando New-AzureRmApplicationGatewayIPConfiguration.Associate myAGSubnet that you previously created to the application gateway using New-AzureRmApplicationGatewayIPConfiguration. Assegnare myAGPublicIPAddress al gateway applicazione usando New-AzureRmApplicationGatewayFrontendIPConfig.Assign myAGPublicIPAddress to the application gateway using New-AzureRmApplicationGatewayFrontendIPConfig.

$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$subnet=$vnet.Subnets[0]
$gipconfig = New-AzureRmApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzureRmApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendport = New-AzureRmApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 443

Creare il pool e le impostazioni back-endCreate the backend pool and settings

Creare il pool back-end denominato appGatewayBackendPool per il gateway applicazione usando New-AzureRmApplicationGatewayBackendAddressPool.Create the backend pool named appGatewayBackendPool for the application gateway using New-AzureRmApplicationGatewayBackendAddressPool. Configurare le impostazioni per il pool back-end usando New-AzureRmApplicationGatewayBackendHttpSettings.Configure the settings for the backend pool using New-AzureRmApplicationGatewayBackendHttpSettings.

$defaultPool = New-AzureRmApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool 
$poolSettings = New-AzureRmApplicationGatewayBackendHttpSettings `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

Creare il listener predefinito e la regolaCreate the default listener and rule

È necessario un listener per consentire al gateway applicazione di instradare il traffico in modo appropriato al pool back-end.A listener is required to enable the application gateway to route traffic appropriately to the backend pool. In questo esempio viene creato un listener di base in ascolto del traffico HTTPS a livello dell'URL radice.In this example, you create a basic listener that listens for HTTPS traffic at the root URL.

Creare un oggetto certificato con il comando New-AzureRmApplicationGatewaySslCertificate e quindi creare un listener denominato mydefaultListener con il comando New-AzureRmApplicationGatewayHttpListener con la configurazione front-end, la porta front-end e il certificato creato in precedenza.Create a certificate object using New-AzureRmApplicationGatewaySslCertificate and then create a listener named mydefaultListener using New-AzureRmApplicationGatewayHttpListener with the frontend configuration, frontend port, and certificate that you previously created. È necessaria una regola per comunicare al listener quale pool back-end usare per il traffico in ingresso.A rule is required for the listener to know which backend pool to use for incoming traffic. Creare una regola di base denominata rule1 usando New-AzureRmApplicationGatewayRequestRoutingRule.Create a basic rule named rule1 using New-AzureRmApplicationGatewayRequestRoutingRule.

$pwd = ConvertTo-SecureString `
  -String "Azure123456!" `
  -Force `
  -AsPlainText
$cert = New-AzureRmApplicationGatewaySslCertificate `
  -Name "appgwcert" `
  -CertificateFile "c:\appgwcert.pfx" `
  -Password $pwd
$defaultlistener = New-AzureRmApplicationGatewayHttpListener `
  -Name mydefaultListener `
  -Protocol Https `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport `
  -SslCertificate $cert
$frontendRule = New-AzureRmApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -HttpListener $defaultlistener `
  -BackendAddressPool $defaultPool `
  -BackendHttpSettings $poolSettings

Creare il gateway applicazione con il certificatoCreate the application gateway with the certificate

Ora che sono state create le risorse di supporto necessarie, specificare i parametri per il gateway applicazione denominato myAppGateway usando New-AzureRmApplicationGatewaySku e quindi crearlo usando New-AzureRmApplicationGateway con il certificato.Now that you created the necessary supporting resources, specify parameters for the application gateway named myAppGateway using New-AzureRmApplicationGatewaySku, and then create it using New-AzureRmApplicationGateway with the certificate.

Creare il gateway applicazioneCreate the application gateway

$sku = New-AzureRmApplicationGatewaySku `
  -Name Standard_Medium `
  -Tier Standard `
  -Capacity 2
$appgw = New-AzureRmApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $defaultPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku `
  -SslCertificates $cert

Creare un set di scalabilità di macchine virtualiCreate a virtual machine scale set

In questo esempio viene creato un set di scalabilità di macchine virtuali per fornire i server per il pool back-end nel gateway applicazione.In this example, you create a virtual machine scale set to provide servers for the backend pool in the application gateway. Il set di scalabilità viene assegnato al pool back-end quando si configurano le impostazioni IP.You assign the scale set to the backend pool when you configure the IP settings.

$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$backendPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool `
  -ApplicationGateway $appgw
$ipConfig = New-AzureRmVmssIpConfig `
  -Name myVmssIPConfig `
  -SubnetId $vnet.Subnets[1].Id `
  -ApplicationGatewayBackendAddressPoolsId $backendPool.Id
$vmssConfig = New-AzureRmVmssConfig `
  -Location eastus `
  -SkuCapacity 2 `
  -SkuName Standard_DS2 `
  -UpgradePolicyMode Automatic
Set-AzureRmVmssStorageProfile $vmssConfig `
  -ImageReferencePublisher MicrosoftWindowsServer `
  -ImageReferenceOffer WindowsServer `
  -ImageReferenceSku 2016-Datacenter `
  -ImageReferenceVersion latest
Set-AzureRmVmssOsProfile $vmssConfig `
  -AdminUsername azureuser `
  -AdminPassword "Azure123456!" `
  -ComputerNamePrefix myvmss
Add-AzureRmVmssNetworkInterfaceConfiguration `
  -VirtualMachineScaleSet $vmssConfig `
  -Name myVmssNetConfig `
  -Primary $true `
  -IPConfiguration $ipConfig
New-AzureRmVmss `
  -ResourceGroupName myResourceGroupAG `
  -Name myvmss `
  -VirtualMachineScaleSet $vmssConfig

Installare IISInstall IIS

$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/davidmu1/samplescripts/master/appgatewayurl.ps1"); 
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }
$vmss = Get-AzureRmVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss
Add-AzureRmVmssExtension -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.8 `
  -Setting $publicSettings
Update-AzureRmVmss `
  -ResourceGroupName myResourceGroupAG `
  -Name myvmss `
  -VirtualMachineScaleSet $vmss

Testare il gateway applicazioneTest the application gateway

È possibile usare Get-AzureRmPublicIPAddress per ottenere l'indirizzo IP pubblico del gateway applicazione.You can use Get-AzureRmPublicIPAddress to get the public IP address of the application gateway. Copiare l'indirizzo IP pubblico e quindi incollarlo nella barra degli indirizzi del browser.Copy the public IP address, and then paste it into the address bar of your browser.

Get-AzureRmPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

Avviso di sicurezza

Per accettare l'avviso di sicurezza se si è usato un certificato autofirmato, selezionare Dettagli e quindi Continua per la pagina Web.To accept the security warning if you used a self-signed certificate, select Details and then Go on to the webpage. Il sito Web IIS protetto viene quindi visualizzato come illustrato nell'esempio seguente:Your secured IIS website is then displayed as in the following example:

Testare l'URL di base nel gateway applicazione

Passaggi successiviNext steps

Questa esercitazione illustra come:In this tutorial, you learned how to:

  • Creare un certificato autofirmatoCreate a self-signed certificate
  • Configurare una reteSet up a network
  • Creare un gateway applicazione con il certificatoCreate an application gateway with the certificate
  • Creare un set di scalabilità di macchine virtuali con il pool back-end predefinitoCreate a virtual machine scale set with the default backend pool

Per altre informazioni sui gateway applicazione e sulle risorse associate, continuare con le procedure dettagliate.To learn more about application gateways and their associated resources, continue to the how-to articles.