End-to-end-TLS configureren met Application Gateway met behulp van PowerShell

Overzicht

Azure-toepassing Gateway ondersteunt end-to-end-versleuteling van verkeer. Application Gateway beëindigt de TLS/SSL-verbinding op de toepassingsgateway. De gateway past vervolgens de routeringsregels toe op het verkeer, versleutelt het pakket opnieuw en stuurt het pakket door naar de juiste back-endserver op basis van de gedefinieerde routeringsregels. Reacties van de webserver ondergaan hetzelfde proces terug naar de eindgebruiker.

Application Gateway ondersteunt het definiëren van aangepaste TLS-opties. Het ondersteunt ook het uitschakelen van de volgende protocolversies: TLSv1.0, TLSv1.1 en TLSv1.2, en het definiëren van welke coderingssuites moeten worden gebruikt en de volgorde van voorkeur. Zie het overzicht van TLS-beleid voor meer informatie over configureerbare TLS-opties.

Notitie

SSL 2.0 en SSL 3.0 zijn standaard uitgeschakeld en kunnen niet worden ingeschakeld. Ze worden beschouwd als onbeveiligd en kunnen niet worden gebruikt met Application Gateway.

scenario image

Scenario

In dit scenario leert u hoe u een toepassingsgateway maakt met behulp van end-to-end TLS met PowerShell.

In dit scenario wordt het volgende beschreven:

  • Maak een resourcegroep met de naam appgw-rg.
  • Maak een virtueel netwerk met de naam appgwvnet met een adresruimte van 10.0.0.0/16.
  • Maak twee subnetten met de naam appgwsubnet en appsubnet.
  • Maak een kleine toepassingsgateway die end-to-end TLS-versleuteling ondersteunt die tls-protocolversies en coderingssuites beperkt.

Voordat u begint

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Voor het configureren van end-to-end TLS met een toepassingsgateway is een certificaat vereist voor de gateway en certificaten zijn vereist voor de back-endservers. Het gatewaycertificaat wordt gebruikt om een symmetrische sleutel af te leiden volgens tls-protocolspecificatie. De symmetrische sleutel wordt vervolgens gebruikt voor het versleutelen en ontsleutelen van het verkeer dat naar de gateway wordt verzonden. Het gatewaycertificaat moet de PFX-indeling (Personal Information Exchange) hebben. Met deze bestandsindeling kunt u de persoonlijke sleutel exporteren die door de toepassingsgateway is vereist om de versleuteling en ontsleuteling van verkeer uit te voeren.

Voor end-to-end TLS-versleuteling moet de back-end expliciet worden toegestaan door de toepassingsgateway. Upload het openbare certificaat van de back-endservers naar de toepassingsgateway. Door het certificaat toe te voegen, zorgt u ervoor dat de toepassingsgateway alleen communiceert met bekende back-endinstanties. Hierdoor wordt de end-to-end communicatie verder beveiligd.

Het configuratieproces wordt beschreven in de volgende secties.

De resourcegroep maken

In deze sectie wordt uitgelegd hoe u een resourcegroep maakt die de toepassingsgateway bevat.

  1. Meld u aan bij uw Azure-account.

    Connect-AzAccount
    
  2. Selecteer het abonnement dat u voor dit scenario wilt gebruiken.

    Select-Azsubscription -SubscriptionName "<Subscription name>"
    
  3. Maak een resourcegroep. (Sla deze stap over als u een bestaande resourcegroep gebruikt.)

    New-AzResourceGroup -Name appgw-rg -Location "West US"
    

Een virtueel netwerk en een subnet maken voor de toepassingsgateway

In het volgende voorbeeld worden een virtueel netwerk en twee subnetten gemaakt. Eén subnet wordt gebruikt voor het opslaan van de toepassingsgateway. Het andere subnet wordt gebruikt voor de back-ends die als host fungeren voor de webtoepassing.

  1. Wijs een adresbereik toe voor het subnet dat moet worden gebruikt voor de toepassingsgateway.

    $gwSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -AddressPrefix 10.0.0.0/24
    

    Notitie

    Subnetten die zijn geconfigureerd voor een toepassingsgateway, moeten de juiste grootte hebben. Een toepassingsgateway kan worden geconfigureerd voor maximaal 10 exemplaren. Elk exemplaar heeft één IP-adres uit het subnet. Te klein van een subnet kan een negatieve invloed hebben op het uitschalen van een toepassingsgateway.

  2. Wijs een adresbereik toe dat moet worden gebruikt voor de back-endadresgroep.

    $nicSubnet = New-AzVirtualNetworkSubnetConfig  -Name 'appsubnet' -AddressPrefix 10.0.2.0/24
    
  3. Maak een virtueel netwerk met de subnetten die in de voorgaande stappen zijn gedefinieerd.

    $vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnet
    
  4. Haal de virtuele netwerkresources en subnetresources op die moeten worden gebruikt in de volgende stappen.

    $vnet = Get-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg
    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -VirtualNetwork $vnet
    $nicSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -VirtualNetwork $vnet
    

Een openbaar IP-adres maken voor de front-endconfiguratie

Maak een openbare IP-resource die moet worden gebruikt voor de toepassingsgateway. Dit openbare IP-adres wordt gebruikt in een van de volgende stappen.

$publicip = New-AzPublicIpAddress -ResourceGroupName appgw-rg -Name 'publicIP01' -Location "West US" -AllocationMethod Dynamic

Belangrijk

Application Gateway biedt geen ondersteuning voor het gebruik van een openbaar IP-adres dat is gemaakt met een gedefinieerd domeinlabel. Alleen een openbaar IP-adres met een dynamisch gemaakt domeinlabel wordt ondersteund. Als u een beschrijvende DNS-naam voor de toepassingsgateway nodig hebt, raden we u aan een CNAME-record als alias te gebruiken.

Een configuratieobject voor de toepassingsgateway maken

Alle configuratie-items worden ingesteld voordat u de toepassingsgateway maakt. Volg de onderstaande stappen om de configuratie-items te maken die nodig zijn voor een toepassingsgatewayresource.

  1. Maak een IP-configuratie van de toepassingsgateway. Met deze instelling wordt geconfigureerd welke van de subnetten die de toepassingsgateway gebruikt. Wanneer de toepassingsgateway wordt gestart, wordt een IP-adres opgehaald uit het geconfigureerde subnet en wordt netwerkverkeer gerouteerd naar de IP-adressen in de back-end-IP-adresgroep. Onthoud dat elk exemplaar één IP-adres gebruikt.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnet
    
  2. Maak een front-end-IP-configuratie. Met deze instelling wordt een privé- of openbaar IP-adres toegewezen aan de front-end van de toepassingsgateway. De volgende stap koppelt het openbare IP-adres in de vorige stap aan de front-end-IP-configuratie.

    $fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicip
    
  3. Configureer de back-end-IP-adresgroep met de IP-adressen van de back-endwebservers. Deze IP-adressen zijn de IP-adressen die het netwerkverkeer ontvangen dat afkomstig is van het front-end-IP-eindpunt. Vervang de IP-adressen in het voorbeeld door eindpunten van uw eigen toepassings-IP-adres.

    $pool = New-AzApplicationGatewayBackendAddressPool -Name 'pool01' -BackendIPAddresses 1.1.1.1, 2.2.2.2, 3.3.3.3
    

    Notitie

    Een FQDN (Fully Qualified Domain Name) is ook een geldige waarde die moet worden gebruikt in plaats van een IP-adres voor de back-endservers. U schakelt deze in met behulp van de switch -BackendFqdns .

  4. Configureer de front-end-IP-poort voor het openbare IP-eindpunt. Deze poort is de poort waarmee eindgebruikers verbinding maken.

    $fp = New-AzApplicationGatewayFrontendPort -Name 'port01'  -Port 443
    
  5. Configureer het certificaat voor de toepassingsgateway. Dit certificaat wordt gebruikt om het verkeer op de toepassingsgateway te ontsleutelen en opnieuw te ontsleutelen.

    $passwd = ConvertTo-SecureString  <certificate file password> -AsPlainText -Force 
    $cert = New-AzApplicationGatewaySSLCertificate -Name cert01 -CertificateFile <full path to .pfx file> -Password $passwd 
    

    Notitie

    In dit voorbeeld wordt het certificaat geconfigureerd dat wordt gebruikt voor de TLS-verbinding. Het certificaat moet de PFX-indeling hebben.

  6. Maak de HTTP-listener voor de toepassingsgateway. Wijs de front-end-IP-configuratie, poort en TLS/SSL-certificaat toe dat moet worden gebruikt.

    $listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $cert
    
  7. Upload het certificaat dat moet worden gebruikt voor de resources van de back-endpool met TLS.

    Notitie

    De standaardtest haalt de openbare sleutel op van de standaard TLS-binding op het IP-adres van de back-end en vergelijkt de openbare-sleutelwaarde die deze ontvangt met de openbare-sleutelwaarde die u hier opgeeft.

    Als u hostheaders en SNI (Server Name Indication) op de back-end gebruikt, is de opgehaalde openbare sleutel mogelijk niet de beoogde site waarnaar verkeer stroomt. Als u twijfelt, gaat u naar https://127.0.0.1/ de back-endservers om te controleren welk certificaat wordt gebruikt voor de standaard TLS-binding. Gebruik de openbare sleutel van die aanvraag in deze sectie. Als u host-headers en SNI op HTTPS-bindingen gebruikt en u geen antwoord en certificaat ontvangt van een handmatige browseraanvraag op https://127.0.0.1/ de back-endservers, moet u een standaard TLS-binding instellen. Als u dit niet doet, mislukken tests en is de back-end niet toegestaan.

    Zie Overzicht van TLS-beëindiging en end-to-end TLS met Application Gateway voor meer informatie over SNI in Application Gateway.

    $authcert = New-AzApplicationGatewayAuthenticationCertificate -Name 'allowlistcert1' -CertificateFile C:\cert.cer
    

    Notitie

    Het certificaat dat in de vorige stap is opgegeven, moet de openbare sleutel van het PFX-certificaat zijn dat aanwezig is op de back-end. Exporteer het certificaat (niet het basiscertificaat) dat is geïnstalleerd op de back-endserver in de CER-indeling (Claim, Evidence en Reasoning) en gebruik het in deze stap. Met deze stap staat u de back-end toe met de toepassingsgateway.

    Als u de Application Gateway v2-SKU gebruikt, maakt u een vertrouwd basiscertificaat in plaats van een verificatiecertificaat. Zie Overzicht van end-to-end TLS met Application Gateway voor meer informatie:

    $trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile  <path to root cert file>
    
  8. Configureer de HTTP-instellingen voor de back-end van de toepassingsgateway. Wijs het certificaat toe dat in de vorige stap is geüpload naar de HTTP-instellingen.

    $poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name 'setting01' -Port 443 -Protocol Https -CookieBasedAffinity Enabled -AuthenticationCertificates $authcert
    

    Gebruik de volgende opdracht voor de Application Gateway v2-SKU:

    $poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"
    
  9. Maak een load balancer-routeringsregel waarmee het gedrag van de load balancer wordt geconfigureerd. In dit voorbeeld wordt een eenvoudige round robin-regel gemaakt.

    $rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
    
  10. Configureer de exemplaargrootte van de toepassingsgateway. De beschikbare grootten zijn Standard_Small, Standard_Medium en Standard_Large. Voor capaciteit zijn de beschikbare waarden 1 tot en met 10.

    $sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2
    

    Notitie

    Een instantieaantal van 1 kan worden gekozen voor testdoeleinden. Het is belangrijk om te weten dat elk aantal exemplaren onder twee exemplaren niet wordt gedekt door de SLA en daarom niet wordt aanbevolen. Kleine gateways moeten worden gebruikt voor ontwikkeltests en niet voor productiedoeleinden.

  11. Configureer het TLS-beleid dat moet worden gebruikt op de toepassingsgateway. Application Gateway ondersteunt de mogelijkheid om een minimale versie in te stellen voor TLS-protocolversies.

    De volgende waarden zijn een lijst met protocolversies die kunnen worden gedefinieerd:

    • TLSV1_0
    • TLSV1_1
    • TLSV1_2

    In het volgende voorbeeld wordt de minimale protocolversie ingesteld op TLSv1_2 en wordt alleen TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 en TLS_RSA_WITH_AES_128_GCM_SHA256 ingeschakeld.

    $SSLPolicy = New-AzApplicationGatewaySSLPolicy -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256" -PolicyType Custom
    

De toepassingsgateway maken

Maak de toepassingsgateway met behulp van alle voorgaande stappen. Het maken van de gateway is een proces dat lang duurt voordat deze wordt uitgevoerd.

Gebruik de onderstaande opdracht voor V1 SKU

$appgw = New-AzApplicationGateway -Name appgateway -SSLCertificates $cert -ResourceGroupName "appgw-rg" -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SSLPolicy $SSLPolicy -AuthenticationCertificates $authcert -Verbose

Gebruik de onderstaande opdracht voor V2-SKU

$appgw = New-AzApplicationGateway -Name appgateway -SSLCertificates $cert -ResourceGroupName "appgw-rg" -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting01 -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SSLPolicy $SSLPolicy -TrustedRootCertificate $trustedRootCert01 -Verbose

Een nieuw certificaat toepassen als het back-endcertificaat is verlopen

Gebruik deze procedure om een nieuw certificaat toe te passen als het back-endcertificaat is verlopen.

  1. Haal de toepassingsgateway op die moet worden bijgewerkt.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Voeg de nieuwe certificaatresource toe uit het CER-bestand, dat de openbare sleutel van het certificaat bevat en kan ook hetzelfde certificaat zijn toegevoegd aan de listener voor TLS-beëindiging op de toepassingsgateway.

    Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer" 
    
  3. Haal het nieuwe verificatiecertificaatobject op in een variabele (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).

    $AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCert
    
  4. Wijs het nieuwe certificaat toe aan de BackendHttp-instelling en raadpleeg het met de variabele $AuthCert. (Geef de NAAM van de HTTP-instelling op die u wilt wijzigen.)

$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
  1. Voer de wijziging door in de toepassingsgateway en geef de nieuwe configuratie door die is opgenomen in de $out variabele.
Set-AzApplicationGateway -ApplicationGateway $gw  

Een niet-gebruikt verlopen certificaat verwijderen uit HTTP-Instellingen

Gebruik deze procedure om een niet-gebruikt verlopen certificaat uit HTTP-Instellingen te verwijderen.

  1. Haal de toepassingsgateway op die moet worden bijgewerkt.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Vermeld de naam van het verificatiecertificaat dat u wilt verwijderen.

    Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select name
    
  3. Verwijder het verificatiecertificaat uit een toepassingsgateway.

    $gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCert
    
  4. Voer de wijziging door.

Set-AzApplicationGateway -ApplicationGateway $gw

TLS-protocolversies beperken op een bestaande toepassingsgateway

In de voorgaande stappen hebt u een toepassing gemaakt met end-to-end TLS en bepaalde TLS-protocolversies uitgeschakeld. In het volgende voorbeeld worden bepaalde TLS-beleidsregels op een bestaande toepassingsgateway uitgeschakeld.

  1. Haal de toepassingsgateway op die moet worden bijgewerkt.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Definieer een TLS-beleid. In het volgende voorbeeld zijn TLSv1.0 en TLSv1.1 uitgeschakeld en zijn de coderingssuites TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 en TLS_RSA_WITH_AES_128_GCM_SHA256 de enigen toegestaan.

    Set-AzApplicationGatewaySSLPolicy -MinProtocolVersion TLSv1_2 -PolicyType Custom -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256" -ApplicationGateway $gw
    
    
  3. Werk ten slotte de gateway bij. Deze laatste stap is een langlopende taak. Wanneer dit is gebeurd, wordt end-to-end TLS geconfigureerd op de toepassingsgateway.

    $gw | Set-AzApplicationGateway
    

Een DNS-naam voor een toepassingsgateway ophalen

Nadat de gateway is gemaakt, is de volgende stap het configureren van de front-end voor communicatie. Application Gateway vereist een dynamisch toegewezen DNS-naam bij het gebruik van een openbaar IP-adres, wat niet vriendelijk is. Om ervoor te zorgen dat eindgebruikers de toepassingsgateway kunnen bereiken, kunt u een CNAME-record gebruiken om naar het openbare eindpunt van de toepassingsgateway te verwijzen. Zie Een aangepaste domeinnaam configureren voor in Azure voor meer informatie.

Als u een alias wilt configureren, haalt u de details van de toepassingsgateway en de bijbehorende IP/DNS-naam op met behulp van het PublicIPAddress-element dat is gekoppeld aan de toepassingsgateway. Gebruik de DNS-naam van de toepassingsgateway om een CNAME-record te maken waarmee de twee webtoepassingen naar deze DNS-naam worden verwezen. We raden het gebruik van A-records niet aan, omdat het VIP kan worden gewijzigd bij het opnieuw opstarten van de toepassingsgateway.

Get-AzPublicIpAddress -ResourceGroupName appgw-RG -Name publicIP01
Name                     : publicIP01
ResourceGroupName        : appgw-RG
Location                 : westus
Id                       : /subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/publicIPAddresses/publicIP01
Etag                     : W/"00000d5b-54ed-4907-bae8-99bd5766d0e5"
ResourceGuid             : 00000000-0000-0000-0000-000000000000
ProvisioningState        : Succeeded
Tags                     : 
PublicIpAllocationMethod : Dynamic
IpAddress                : xx.xx.xxx.xx
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                                "Id": "/subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/applicationGateways/appgwtest/frontendIP
                            Configurations/frontend1"
                            }
DnsSettings              : {
                                "Fqdn": "00000000-0000-xxxx-xxxx-xxxxxxxxxxxx.cloudapp.net"
                            }

Volgende stappen

Zie het overzicht van de Web Application Firewall voor meer informatie over het beveiligen van uw webtoepassingen met Web Application Firewall via Application Gateway.