Konfigurace koncového šifrování TLS s využitím služby Application Gateway a PowerShellu

Přehled

Aplikace Azure Gateway podporuje kompletní šifrování provozu. Application Gateway ukončí připojení TLS/SSL ve službě Application Gateway. Brána pak použije pravidla směrování na provoz, znovu zašifruje paket a předá paket na příslušný back-endový server na základě definovaných pravidel směrování. Každá odpověď webového serveru prochází ke koncovému uživateli stejným procesem.

Application Gateway podporuje definování vlastních možností protokolu TLS. Podporuje také zakázání následujících verzí protokolu: TLSv1.0, TLSv1.1 a TLSv1.2 a také definování šifrovacích sad, které se mají použít, a pořadí předvoleb. Další informace o konfigurovatelných možnostech protokolu TLS najdete v přehledu zásad PROTOKOLU TLS.

Poznámka:

Protokoly SSL 2.0 a SSL 3.0 jsou ve výchozím nastavení zakázané a nelze je povolit. Jsou považovány za nezabezpečené a nelze je použít se službou Application Gateway.

Obrázek scénáře

Scénář

V tomto scénáři se dozvíte, jak vytvořit aplikační bránu pomocí kompletního protokolu TLS s PowerShellem.

Tento scénář bude:

  • Vytvořte skupinu prostředků s názvem appgw-rg.
  • Vytvořte virtuální síť s názvem appgwvnet s adresní prostorem 10.0.0.0/16.
  • Vytvořte dvě podsítě s názvem appgwsubnet a appsubnet.
  • Vytvořte malou aplikační bránu podporující kompletní šifrování TLS, které omezuje verze protokolu TLS a šifrovací sady.

Než začnete

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Ke konfiguraci kompletního protokolu TLS se službou Application Gateway se vyžaduje certifikát pro bránu a certifikáty jsou vyžadovány pro back-endové servery. Certifikát brány se používá k odvození symetrického klíče podle specifikace protokolu TLS. Symetrický klíč se pak použije k šifrování a dešifrování provozu odeslaného do brány. Certifikát brány musí být ve formátu PFX (Personal Information Exchange). Tento formát souboru umožňuje exportovat privátní klíč, který služba Application Gateway vyžaduje k šifrování a dešifrování provozu.

Pro koncové šifrování TLS musí back-end explicitně povolit aplikační brána. Nahrajte veřejný certifikát back-endových serverů do aplikační brány. Přidáním certifikátu zajistíte, že aplikační brána komunikuje pouze se známými back-endovými instancemi. Tím se dále zabezpečuje kompletní komunikace.

Proces konfigurace je popsaný v následujících částech.

Vytvoření skupiny prostředků

Tato část vás provede vytvořením skupiny prostředků, která obsahuje aplikační bránu.

  1. Přihlaste se ke svému účtu Azure.

    Connect-AzAccount
    
  2. Vyberte předplatné, které chcete použít pro tento scénář.

    Select-Azsubscription -SubscriptionName "<Subscription name>"
    
  3. Vytvořte skupinu prostředků. (Tento krok přeskočte, pokud používáte některou ze stávajících skupin prostředků.)

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

Vytvoření virtuální sítě a podsítě pro službu Application Gateway

Následující příklad vytvoří virtuální síť a dvě podsítě. Jedna podsíť se používá k uložení aplikační brány. Druhá podsíť se používá pro back-endy, které hostují webovou aplikaci.

  1. Přiřaďte rozsah adres pro podsíť, která se má použít pro aplikační bránu.

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

    Poznámka:

    Podsítě nakonfigurované pro aplikační bránu by měly mít správnou velikost. Aplikační bránu je možné nakonfigurovat až pro 10 instancí. Každá instance přebírá jednu IP adresu z podsítě. Příliš malá podsíť může nepříznivě ovlivnit horizontální navýšení kapacity aplikační brány.

  2. Přiřaďte rozsah adres, který se má použít pro back-endový fond adres.

    $nicSubnet = New-AzVirtualNetworkSubnetConfig  -Name 'appsubnet' -AddressPrefix 10.0.2.0/24
    
  3. Vytvořte virtuální síť s podsítěmi definovanými v předchozích krocích.

    $vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnet
    
  4. Načtěte prostředky virtuální sítě a podsítě, které se mají použít v následujících krocích.

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

Vytvoření veřejné IP adresy pro konfiguraci front-endu

Vytvořte prostředek veřejné IP adresy, který se použije pro aplikační bránu. Tato veřejná IP adresa se používá v jednom z následujících kroků.

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

Důležité

Application Gateway nepodporuje použití veřejné IP adresy vytvořené s definovaným popiskem domény. Podporuje se jenom veřejná IP adresa s dynamicky vytvořeným popiskem domény. Pokud pro aplikační bránu požadujete popisný název DNS, doporučujeme jako alias použít záznam CNAME.

Vytvořte objekt konfigurace aplikační brány

Před vytvořením aplikační brány se nastaví všechny položky konfigurace. Následující kroky slouží k vytvoření položek konfigurace potřebné pro prostředek služby Application Gateway.

  1. Vytvořte konfiguraci PROTOKOLU IP služby Application Gateway. Toto nastavení konfiguruje, které podsítě aplikační brána používá. Při spuštění aplikační brány převezme IP adresu z nakonfigurované podsítě a směruje síťový provoz na IP adresy v back-endovém fondu IP adres. Uvědomte si, že každá instance vyžaduje jednu IP adresu.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnet
    
  2. Vytvořte konfiguraci front-endové IP adresy. Toto nastavení mapuje privátní nebo veřejnou IP adresu na front-end aplikační brány. Následující krok přidruží veřejnou IP adresu v předchozím kroku ke konfiguraci front-endové IP adresy.

    $fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicip
    
  3. Nakonfigurujte fond back-endových IP adres s IP adresami back-endových webových serverů. Tyto IP adresy jsou IP adresy, které přijímají síťový provoz, který pochází z koncového bodu ip adresy front-endu. Nahraďte IP adresy v ukázce koncovými body IP adres vaší aplikace.

    $pool = New-AzApplicationGatewayBackendAddressPool -Name 'pool01' -BackendIPAddresses 203.0.113.1, 203.0.113.2, 203.0.113.3
    

    Poznámka:

    Plně kvalifikovaný název domény (FQDN) je také platná hodnota, která se použije místo IP adresy pro back-endové servery. Povolíte ho pomocí přepínače -BackendFqdns .

  4. Nakonfigurujte port front-endové IP adresy pro koncový bod veřejné IP adresy. Tento port je port, ke kterému se koncoví uživatelé připojují.

    $fp = New-AzApplicationGatewayFrontendPort -Name 'port01'  -Port 443
    
  5. Nakonfigurujte certifikát pro aplikační bránu. Tento certifikát slouží k dešifrování a opětovnému šifrování provozu ve službě Application Gateway.

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

    Poznámka:

    Tato ukázka nakonfiguruje certifikát použitý pro připojení TLS. Certifikát musí být ve formátu .pfx.

  6. Vytvořte naslouchací proces HTTP pro aplikační bránu. Přiřaďte konfiguraci front-endové IP adresy, port a certifikát TLS/SSL, který se má použít.

    $listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $cert
    
  7. Nahrajte certifikát, který se má použít pro prostředky back-endového fondu s povoleným protokolem TLS.

    Poznámka:

    Výchozí sonda získá veřejný klíč z výchozí vazby TLS na IP adrese back-endu a porovná hodnotu veřejného klíče, kterou obdrží, s hodnotou veřejného klíče, kterou zde zadáte.

    Pokud používáte hlavičky hostitelů a indikaci názvu serveru (SNI) na back-endu, načtený veřejný klíč nemusí být zamýšlenou lokalitou, do které provoz proudí. Pokud máte pochybnosti, navštivte https://127.0.0.1/ back-endové servery a ověřte, který certifikát se používá pro výchozí vazbu TLS. Použijte veřejný klíč z tohoto požadavku v této části. Pokud pro vazby HTTPS používáte hlavičky hostitele a SNI a neobdržíte odpověď a certifikát z ručního požadavku prohlížeče na https://127.0.0.1/ back-endové servery, musíte u nich nastavit výchozí vazbu TLS. Pokud to neuděláte, sondy selžou a back-end není povolený.

    Další informace o SNI ve službě Application Gateway najdete v tématu Přehled ukončení protokolu TLS a koncového šifrování TLS se službou Application Gateway.

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

    Poznámka:

    Certifikát poskytnutý v předchozím kroku by měl být veřejným klíčem certifikátu .pfx, který je k dispozici na back-endu. Exportujte certifikát (ne kořenový certifikát) nainstalovaný na back-endovém serveru ve formátu Claim, Evidence a Reasoning (CER) a použijte ho v tomto kroku. Tento krok umožňuje back-endu se službou Application Gateway.

    Pokud používáte skladovou položku služby Application Gateway v2, vytvořte místo ověřovacího certifikátu důvěryhodný kořenový certifikát. Další informace najdete v tématu Přehled koncového šifrování TLS se službou Application Gateway:

    $trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile  <path to root cert file>
    
  8. Nakonfigurujte nastavení HTTP pro back-end služby Application Gateway. Přiřaďte certifikát nahraný v předchozím kroku k nastavení HTTP.

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

    Pro skladovou položku Application Gateway v2 použijte následující příkaz:

    $poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"
    
  9. Vytvořte pravidlo směrování nástroje pro vyrovnávání zatížení, které konfiguruje chování nástroje pro vyrovnávání zatížení. V tomto příkladu se vytvoří základní pravidlo kruhového dotazování.

    $rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
    
  10. Nakonfigurujte velikost instance služby Application Gateway. Dostupné velikosti jsou Standard_Small, Standard_Medium a Standard_Large. Pro kapacitu jsou dostupné hodnoty 110.

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

    Poznámka:

    Pro účely testování je možné zvolit počet instancí 1. Je důležité vědět, že smlouva SLA nevztahuje počet instancí pod dvěma instancemi, a proto se nedoporučuje. Malé brány se používají pro vývojový test, nikoli pro produkční účely.

  11. Nakonfigurujte zásadu PROTOKOLU TLS, která se má použít ve službě Application Gateway. Application Gateway podporuje možnost nastavit minimální verzi pro verze protokolu TLS.

    Následující hodnoty jsou seznam verzí protokolu, které lze definovat:

    • TLSV1_0
    • TLSV1_1
    • TLSV1_2

    Následující příklad nastaví minimální verzi protokolu na TLSv1_2 a povolí pouze TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 a 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
    

Vytvoření služby Application Gateway

Pomocí všech předchozích kroků vytvořte aplikační bránu. Vytvoření brány je proces, který trvá dlouhou dobu.

Pro skladovou položku V1 použijte následující příkaz.

$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

Pro skladovou položku V2 použijte následující příkaz.

$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

Pokud vypršela platnost back-endového certifikátu, použijte nový certifikát.

Tento postup použijte k použití nového certifikátu, pokud vypršela platnost back-endového certifikátu.

  1. Načtěte aplikační bránu, která se má aktualizovat.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Přidejte nový prostředek certifikátu ze souboru .cer, který obsahuje veřejný klíč certifikátu a může být také stejným certifikátem přidaný do naslouchacího procesu pro ukončení protokolu TLS ve službě Application Gateway.

    Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer" 
    
  3. Získejte nový objekt ověřovacího certifikátu do proměnné (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).

    $AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCert
    
  4. Přiřaďte nový certifikát do nastavení BackendHttp a projděte si ho s proměnnou $AuthCert. (Zadejte název nastavení HTTP, který chcete změnit.)

$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
  1. Potvrďte změnu do aplikační brány a předejte novou konfiguraci obsaženou do proměnné $out.
Set-AzApplicationGateway -ApplicationGateway $gw  

Odebrání nepoužívaného certifikátu s vypršenou platností z Nastavení HTTP

Tento postup slouží k odebrání nepoužívaného certifikátu s vypršenou platností z Nastavení HTTP.

  1. Načtěte aplikační bránu, která se má aktualizovat.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Uveďte název ověřovacího certifikátu, který chcete odebrat.

    Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select name
    
  3. Odeberte ověřovací certifikát ze služby Application Gateway.

    $gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCert
    
  4. Potvrďte změnu.

Set-AzApplicationGateway -ApplicationGateway $gw

Omezení verzí protokolu TLS u existující aplikační brány

Předchozí kroky vás provedly vytvořením aplikace s kompletním protokolem TLS a zakázáním určitých verzí protokolu TLS. Následující příklad zakáže určité zásady TLS u existující aplikační brány.

  1. Načtěte aplikační bránu, která se má aktualizovat.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Definujte zásadu PROTOKOLU TLS. V následujícím příkladu jsou tlsv1.0 a TLSv1.1 zakázány a šifrovací sady TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 a TLS_RSA_WITH_AES_128_GCM_SHA256 jsou jediné povolené.

    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. Nakonec bránu aktualizujte. Tento poslední krok je dlouhotrvající úloha. Po dokončení se na aplikační bráně nakonfiguruje kompletní protokol TLS.

    $gw | Set-AzApplicationGateway
    

Získání názvu DNS služby Application Gateway

Po vytvoření brány je dalším krokem konfigurace front-endu pro komunikaci. Application Gateway vyžaduje dynamicky přiřazený název DNS při použití veřejné IP adresy, což není popisné. Aby koncoví uživatelé mohli získat přístup ke službě Application Gateway, můžete pomocí záznamu CNAME odkazovat na veřejný koncový bod služby Application Gateway. Další informace najdete v tématu Konfigurace vlastního názvu domény v Azure.

Pokud chcete nakonfigurovat alias, načtěte podrobnosti o aplikační bráně a jeho přidruženém názvu IP/DNS pomocí elementu PublicIPAddress připojeného ke službě Application Gateway. Pomocí názvu DNS služby Application Gateway vytvořte záznam CNAME, který odkazuje na tyto dvě webové aplikace na tento název DNS. Nedoporučujeme používat záznamy A, protože virtuální IP adresa se může při restartování služby Application Gateway změnit.

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

Další kroky

Další informace o posílení zabezpečení webových aplikací pomocí firewallu webových aplikací prostřednictvím služby Application Gateway najdete v přehledu brány firewall webových aplikací.