Konfigurera SSL från slutpunkt till slutpunkt i Application Gateway via PowerShell

Översikt

Azure Application Gateway stöder kryptering från slutpunkt till slutpunkt för trafik. Application Gateway avslutar TLS/SSL-anslutningen vid programgatewayen. Gatewayen tillämpar sedan routningsreglerna på trafiken, krypterar om paketet och vidarebefordrar paketet till lämplig serverdelsserver baserat på de definierade routningsreglerna. Eventuella svar från webbservern genomgår samma process på väg tillbaka till användaren.

Application Gateway har stöd för att definiera anpassade TLS-alternativ. Det stöder också inaktivering av följande protokollversioner: TLSv1.0, TLSv1.1 och TLSv1.2, samt definiera vilka chiffersviter som ska användas och prioritetsordning. Mer information om konfigurerbara TLS-alternativ finns i översikten över TLS-princip.

Kommentar

SSL 2.0 och SSL 3.0 är inaktiverade som standard och kan inte aktiveras. De anses vara osäkra och kan inte användas med Application Gateway.

scenario image

Scenario

I det här scenariot får du lära dig hur du skapar en programgateway med hjälp av TLS från slutpunkt till slutpunkt med PowerShell.

Det här scenariot kommer att:

  • Skapa en resursgrupp med namnet appgw-rg.
  • Skapa ett virtuellt nätverk med namnet appgwvnet med adressutrymmet 10.0.0.0/16.
  • Skapa två undernät som kallas appgwsubnet och appsubnet.
  • Skapa en liten programgateway som stöder TLS-kryptering från slutpunkt till slutpunkt som begränsar TLS-protokollversioner och chiffersviter.

Innan du börjar

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

För att konfigurera TLS från slutpunkt till slutpunkt med en programgateway krävs ett certifikat för gatewayen och certifikat krävs för serverdelsservrarna. Gatewaycertifikatet används för att härleda en symmetrisk nyckel enligt TLS-protokollspecifikationen. Den symmetriska nyckeln används sedan för att kryptera och dekryptera trafiken som skickas till gatewayen. Gatewaycertifikatet måste vara i PFX-format (Personal Information Exchange). Med det här filformatet kan du exportera den privata nyckel som krävs av programgatewayen för att utföra kryptering och dekryptering av trafik.

För TLS-kryptering från slutpunkt till slutpunkt måste serverdelen uttryckligen tillåtas av programgatewayen. Ladda upp det offentliga certifikatet för serverdelsservrarna till programgatewayen. Genom att lägga till certifikatet ser du till att programgatewayen endast kommunicerar med kända serverdelsinstanser. Detta skyddar kommunikationen från slutpunkt till slutpunkt.

Konfigurationsprocessen beskrivs i följande avsnitt.

Skapa resursgruppen

Det här avsnittet beskriver hur du skapar en resursgrupp som innehåller programgatewayen.

  1. Logga in på ditt Azure-konto.

    Connect-AzAccount
    
  2. Välj den prenumeration som ska användas för det här scenariot.

    Select-Azsubscription -SubscriptionName "<Subscription name>"
    
  3. Skapa en resursgrupp. (Hoppa över det här steget om du använder en befintlig resursgrupp.)

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

Skapa ett virtuellt nätverk och ett undernät för programgatewayen

I följande exempel skapas ett virtuellt nätverk och två undernät. Ett undernät används för att lagra programgatewayen. Det andra undernätet används för serverdelarna som är värd för webbprogrammet.

  1. Tilldela ett adressintervall för undernätet som ska användas för programgatewayen.

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

    Kommentar

    Undernät som konfigurerats för en programgateway bör ha rätt storlek. En programgateway kan konfigureras för upp till 10 instanser. Varje instans tar en IP-adress från undernätet. För litet undernät kan påverka utskalningen av en programgateway negativt.

  2. Tilldela ett adressintervall som ska användas för serverdelsadresspoolen.

    $nicSubnet = New-AzVirtualNetworkSubnetConfig  -Name 'appsubnet' -AddressPrefix 10.0.2.0/24
    
  3. Skapa ett virtuellt nätverk med de undernät som definierats i föregående steg.

    $vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnet
    
  4. Hämta den virtuella nätverksresursen och undernätsresurserna som ska användas i de steg som följer.

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

Skapa en offentlig IP-adress för klientdelskonfigurationen

Skapa en offentlig IP-resurs som ska användas för programgatewayen. Den här offentliga IP-adressen används i något av stegen nedan.

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

Viktigt!

Application Gateway stöder inte användning av en offentlig IP-adress som skapats med en definierad domänetikett. Endast en offentlig IP-adress med en dynamiskt skapad domänetikett stöds. Om du behöver ett eget DNS-namn för programgatewayen rekommenderar vi att du använder en CNAME-post som alias.

Skapa ett konfigurationsobjekt för programgatewayen

Alla konfigurationsobjekt anges innan du skapar programgatewayen. Följande steg skapar konfigurationsobjekten som behövs för en programgatewayresurs.

  1. Skapa en IP-konfiguration för programgatewayen. Den här inställningen konfigurerar vilket av de undernät som programgatewayen använder. När programgatewayen startar hämtas en IP-adress från det konfigurerade undernätet och dirigerar nätverkstrafik till IP-adresserna i serverdels-IP-poolen. Tänk på att varje instans använder en IP-adress.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnet
    
  2. Skapa en IP-konfiguration för klientdelen. Den här inställningen mappar en privat eller offentlig IP-adress till klientdelen av programgatewayen. Följande steg associerar den offentliga IP-adressen i föregående steg med IP-konfigurationen för klientdelen.

    $fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicip
    
  3. Konfigurera serverdels-IP-adresspoolen med IP-adresserna för serverdelswebbservrarna. Dessa IP-adresser är DE IP-adresser som tar emot nätverkstrafiken som kommer från klientdelens IP-slutpunkt. Ersätt IP-adresserna i exemplet med dina egna ip-adressslutpunkter för programmet.

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

    Kommentar

    Ett fullständigt domännamn (FQDN) är också ett giltigt värde att använda i stället för en IP-adress för serverdelsservrarna. Du aktiverar det med växeln -BackendFqdns .

  4. Konfigurera klientdelens IP-port för den offentliga IP-slutpunkten. Den här porten är den port som slutanvändarna ansluter till.

    $fp = New-AzApplicationGatewayFrontendPort -Name 'port01'  -Port 443
    
  5. Konfigurera certifikatet för programgatewayen. Det här certifikatet används för att dekryptera och omkryptera trafiken på programgatewayen.

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

    Kommentar

    Det här exemplet konfigurerar certifikatet som används för TLS-anslutningen. Certifikatet måste vara i .pfx-format.

  6. Skapa HTTP-lyssnaren för programgatewayen. Tilldela ip-konfiguration, port och TLS/SSL-certifikat för klientdelen att använda.

    $listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $cert
    
  7. Ladda upp certifikatet som ska användas på de TLS-aktiverade serverdelspoolresurserna.

    Kommentar

    Standardavsökningen hämtar den offentliga nyckeln från standard-TLS-bindningen på serverdelens IP-adress och jämför det offentliga nyckelvärde som den tar emot med det offentliga nyckelvärde som du anger här.

    Om du använder värdhuvuden och SNI (Server Name Indication) på serverdelen kanske den hämtade offentliga nyckeln inte är den avsedda platsen som trafiken flödar till. Om du är osäker går du till https://127.0.0.1/ serverdelsservrarna för att bekräfta vilket certifikat som används för standard-TLS-bindningen. Använd den offentliga nyckeln från den begäran i det här avsnittet. Om du använder värdhuvuden och SNI på HTTPS-bindningar och inte får något svar och certifikat från en manuell webbläsarbegäran till https://127.0.0.1/ på serverdelsservrarna måste du konfigurera en standard-TLS-bindning på dem. Om du inte gör det misslyckas avsökningarna och serverdelen tillåts inte.

    Mer information om SNI i Application Gateway finns i Översikt över TLS-avslutning och TLS från slutpunkt till slutpunkt med Application Gateway.

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

    Kommentar

    Certifikatet som angavs i föregående steg ska vara den offentliga nyckeln för .pfx-certifikatet som finns på serverdelen. Exportera certifikatet (inte rotcertifikatet) som är installerat på serverdelsservern i CER-format (Claim, Evidence och Reasoning) och använd det i det här steget. Det här steget tillåter serverdelen med programgatewayen.

    Om du använder Application Gateway v2 SKU skapar du ett betrott rotcertifikat i stället för ett autentiseringscertifikat. Mer information finns i Översikt över TLS från slutpunkt till slutpunkt med Application Gateway:

    $trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile  <path to root cert file>
    
  8. Konfigurera HTTP-inställningarna för programgatewayens serverdel. Tilldela certifikatet som laddades upp i föregående steg till HTTP-inställningarna.

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

    Använd följande kommando för Application Gateway v2 SKU:

    $poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"
    
  9. Skapa en routningsregel för lastbalanserare som konfigurerar lastbalanserarens beteende. I det här exemplet skapas en grundläggande resursallokeringsregel.

    $rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
    
  10. Konfigurera programgatewayens instansstorlek. De tillgängliga storlekarna är Standard_Small, Standard_Medium och Standard_Large. För kapacitet är de tillgängliga värdena 1 till 10.

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

    Kommentar

    Ett instansantal på 1 kan väljas i testsyfte. Det är viktigt att veta att alla instanser under två instanser inte omfattas av serviceavtalet och därför inte rekommenderas. Små gatewayer ska användas för utvecklingstest och inte för produktionsändamål.

  11. Konfigurera TLS-principen som ska användas på programgatewayen. Application Gateway stöder möjligheten att ange en lägsta version för TLS-protokollversioner.

    Följande värden är en lista över protokollversioner som kan definieras:

    • TLSV1_0
    • TLSV1_1
    • TLSV1_2

    I följande exempel anges den lägsta protokollversionen till TLSv1_2 och aktiverar endast TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 och TLS_RSA_WITH_AES_128_GCM_SHA256 .

    $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
    

Skapa programgatewayen

Skapa programgatewayen med hjälp av alla föregående steg. Skapandet av gatewayen är en process som tar lång tid att köra.

För V1 SKU använder du kommandot nedan

$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

För V2 SKU använder du kommandot nedan

$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

Tillämpa ett nytt certifikat om serverdelscertifikatet har upphört att gälla

Använd den här proceduren för att tillämpa ett nytt certifikat om serverdelscertifikatet har upphört att gälla.

  1. Hämta programgatewayen som ska uppdateras.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Lägg till den nya certifikatresursen från cer-filen, som innehåller certifikatets offentliga nyckel och kan också vara samma certifikat som läggs till i lyssnaren för TLS-avslutning på programgatewayen.

    Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer" 
    
  3. Hämta det nya autentiseringscertifikatobjektet i en variabel (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).

    $AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCert
    
  4. Tilldela det nya certifikatet till inställningen BackendHttp och referera till det med variabeln $AuthCert. (Ange det HTTP-inställningsnamn som du vill ändra.)

$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
  1. Checka in ändringen i programgatewayen och skicka den nya konfigurationen i variabeln $out.
Set-AzApplicationGateway -ApplicationGateway $gw  

Ta bort ett oanvänt utgånget certifikat från HTTP-Inställningar

Använd den här proceduren om du vill ta bort ett oanvänt utgånget certifikat från HTTP-Inställningar.

  1. Hämta programgatewayen som ska uppdateras.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Ange namnet på det autentiseringscertifikat som du vill ta bort.

    Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select name
    
  3. Ta bort autentiseringscertifikatet från en programgateway.

    $gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCert
    
  4. Genomför ändringen.

Set-AzApplicationGateway -ApplicationGateway $gw

Begränsa TLS-protokollversioner på en befintlig programgateway

Föregående steg tog dig genom att skapa ett program med TLS från slutpunkt till slutpunkt och inaktivera vissa TLS-protokollversioner. I följande exempel inaktiveras vissa TLS-principer på en befintlig programgateway.

  1. Hämta programgatewayen som ska uppdateras.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Definiera en TLS-princip. I följande exempel inaktiveras TLSv1.0 och TLSv1.1 och chiffersviterna TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 och TLS_RSA_WITH_AES_128_GCM_SHA256 är de enda som tillåts.

    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. Uppdatera slutligen gatewayen. Det sista steget är en tidskrävande uppgift. När det är klart konfigureras TLS från slutpunkt till slutpunkt på programgatewayen.

    $gw | Set-AzApplicationGateway
    

Hämta ett DNS-namn för programgatewayen

När gatewayen har skapats är nästa steg att konfigurera klientdelen för kommunikation. Application Gateway kräver ett dynamiskt tilldelat DNS-namn när du använder en offentlig IP-adress, vilket inte är användarvänligt. För att säkerställa att slutanvändarna kan nå programgatewayen kan du använda en CNAME-post för att peka på den offentliga slutpunkten för programgatewayen. Mer information finns i Konfigurera ett anpassat domännamn för i Azure.

Om du vill konfigurera ett alias hämtar du information om programgatewayen och dess associerade IP/DNS-namn med hjälp av publicIPAddress-elementet som är kopplat till programgatewayen. Använd programgatewayens DNS-namn för att skapa en CNAME-post som pekar de två webbprogrammen till det här DNS-namnet. Vi rekommenderar inte användning av A-poster eftersom VIP kan ändras vid omstart av programgatewayen.

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"
                            }

Nästa steg

Mer information om hur du härdar säkerheten för dina webbprogram med Brandvägg för webbprogram via Application Gateway finns i översikten över brandväggen för webbprogram.