Dela via


Konfigurera TLS från slutpunkt till slutpunkt med hjälp av Application Gateway med 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. För att lära dig mer om konfigurerbara TLS-alternativ, se TLS-policyöversikten.

Anmärkning

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.

scenariobild

Scenarium

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

Anmärkning

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 Migrera Azure PowerShell från AzureRM till Az.

För att konfigurera TLS ende-till-ände med en applikationsgateway krävs ett certifikat för gatewayen och certifikat krävs för backend-servrarna. 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 bakänden uttryckligen tillåtas av applikationsgatewayen. Ladda upp det offentliga certifikatet för backend-servrarna till applikationsgatewayen. 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 back end-delarna som är värdar för webbapplikationen.

  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
    

    Anmärkning

    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 vänligt DNS-namn för applikationsgatewayen 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 de konfigurationsobjekt som behövs för en application gateway-resurs.

  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 203.0.113.1, 203.0.113.2, 203.0.113.3
    

    Anmärkning

    Ett fullständigt domännamn (FQDN) är också ett giltigt värde istället för en IP-adress för backendservrarna. 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 
    

    Anmärkning

    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.

    Anmärkning

    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ärdnamn och SNI (Server Name Indication) på den bakomliggande servern kanske den hämtade offentliga nyckeln inte är den avsedda webbplats som trafiken flödar till. Om du är osäker, besök https://127.0.0.1/ bakgrundsservrarna för att bekräfta vilket certifikat som används för TLS-standardbindningen. Använd den offentliga nyckeln från den begäran i det här avsnittet. Om du använder värdnamn 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å backendservrarna måste du konfigurera en standard-TLS-bindning på dem. If you do not do so, probes fail and the back end is not allowed.

    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
    

    Anmärkning

    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. This step allows the back end with the application gateway.

    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. In this example, a basic round-robin rule is created.

    $rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
    
  10. Konfigurera instansstorleken för programgatewayen. 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
    

    Anmärkning

    Ett instansantal på 1 kan väljas i testsyfte. It is important to know that any instance count under two instances is not covered by the SLA and is therefore not recommended. 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. Retrieve the application gateway to update.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Lägg till den nya certifikatresursen från filen .cer, som innehåller certifikatets offentliga nyckel och kan även vara samma certifikat som läggs till lyssnaren för TLS-avslutning vid 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. Bekräfta ändringen i applikationsgatewayen och skicka den nya konfigurationen som finns 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. Retrieve the application gateway to update.

    $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

De föregående stegen tog dig genom att skapa en applikation med end-to-end TLS och inaktivera vissa TLS-protokollversioner. I följande exempel inaktiveras vissa TLS-principer på en befintlig programgateway.

  1. Retrieve the application gateway to update.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Define a TLS policy. 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å applikationsgatewayen kan du använda en CNAME-post för att peka på applikationsgatewayens offentliga slutpunkt. 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. We don't recommend the use of A-records, because the VIP can change on restart of the application gateway.

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.