Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ö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.
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.
Logga in på ditt Azure-konto.
Connect-AzAccountVälj den prenumeration som ska användas för det här scenariot.
Select-Azsubscription -SubscriptionName "<Subscription name>"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.
Tilldela ett adressintervall för undernätet som ska användas för programgatewayen.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -AddressPrefix 10.0.0.0/24Anmä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.
Tilldela ett adressintervall som ska användas för serverdelsadresspoolen.
$nicSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -AddressPrefix 10.0.2.0/24Skapa 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, $nicSubnetHä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.
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 $gwSubnetSkapa 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 $publicipKonfigurera 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.3Anmä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 .
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 443Konfigurera 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 $passwdAnmärkning
Det här exemplet konfigurerar certifikatet som används för TLS-anslutningen. Certifikatet måste vara i .pfx-format.
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 $certLadda 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.cerAnmä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>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 $authcertAnvä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"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 $poolKonfigurera 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 2Anmä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.
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.
Retrieve the application gateway to update.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGLä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"Hämta det nya autentiseringscertifikatobjektet i en variabel (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).
$AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCertTilldela 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
- 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.
Retrieve the application gateway to update.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGAnge namnet på det autentiseringscertifikat som du vill ta bort.
Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select nameTa bort autentiseringscertifikatet från en programgateway.
$gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCertGenomfö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.
Retrieve the application gateway to update.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGDefine 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 $gwUppdatera 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.