Share via


Teljes körű TLS konfigurálása az Application Gateway használatával a PowerShell-lel

Áttekintés

Azure-alkalmazás Átjáró támogatja a forgalom végpontok közötti titkosítását. Az Application Gateway leállítja a TLS/SSL-kapcsolatot az application gatewayen. Az átjáró ezután alkalmazza az útválasztási szabályokat a forgalomra, újra titkosítja a csomagot, és a megadott útválasztási szabályok alapján továbbítja a csomagot a megfelelő háttérkiszolgálóra. A webkiszolgáló esetleges válasza ugyanilyen módon jut el a végfelhasználóhoz.

Az Application Gateway támogatja az egyéni TLS-beállítások megadását. Emellett támogatja a következő protokollverziók letiltását is: TLSv1.0, TLSv1.1 és TLSv1.2, valamint meghatározza a használni kívánt titkosítási csomagokat és a beállítások sorrendjét. A konfigurálható TLS-beállításokról a TLS-szabályzat áttekintésében olvashat bővebben.

Megjegyzés:

Az SSL 2.0 és az SSL 3.0 alapértelmezés szerint le van tiltva, és nem engedélyezhető. Nem biztonságosnak minősülnek, és nem használhatók az Application Gatewayben.

scenario image

Eset

Ebben a forgatókönyvben megtudhatja, hogyan hozhat létre alkalmazásátjárót a végpontok közötti TLS és a PowerShell használatával.

Ez a forgatókönyv a következő:

  • Hozzon létre egy appgw-rg nevű erőforráscsoportot.
  • Hozzon létre egy appgwvnet nevű virtuális hálózatot a 10.0.0.0/16 címtérrel.
  • Hozzon létre két appgwsubnet és appsubnet nevű alhálózatot.
  • Hozzon létre egy kis alkalmazásátjárót, amely támogatja a TLS-titkosítást, amely korlátozza a TLS protokollverzióit és titkosítási csomagjait.

Előkészületek

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

A teljes körű TLS alkalmazásátjáróval való konfigurálásához tanúsítványra van szükség az átjáróhoz, a háttérkiszolgálókhoz pedig tanúsítványokra van szükség. Az átjárótanúsítvány egy szimmetrikus kulcs kinyerésére szolgál a TLS protokoll specifikációjának megfelelően. A szimmetrikus kulcsot ezután titkosítja és visszafejti az átjárónak küldött forgalmat. Az átjárótanúsítványnak személyes adatcsere (PFX) formátumban kell lennie. Ez a fájlformátum lehetővé teszi az application gateway által a forgalom titkosításához és visszafejtéséhez szükséges titkos kulcs exportálását.

A végpontok közötti TLS-titkosításhoz a háttérrendszert explicit módon engedélyeznie kell az Application Gatewaynek. Töltse fel a háttérkiszolgálók nyilvános tanúsítványát az Application Gatewaybe. A tanúsítvány hozzáadása biztosítja, hogy az Application Gateway csak ismert háttérpéldányokkal kommunikáljon. Ez tovább védi a végpontok közötti kommunikációt.

A konfigurációs folyamatot a következő szakaszok ismertetik.

Az erőforráscsoport létrehozása

Ez a szakasz végigvezeti az Application Gatewayt tartalmazó erőforráscsoport létrehozásán.

  1. Jelentkezzen be Azure-fiókjába.

    Connect-AzAccount
    
  2. Válassza ki az ehhez a forgatókönyvhöz használni kívánt előfizetést.

    Select-Azsubscription -SubscriptionName "<Subscription name>"
    
  3. Hozzon létre egy erőforráscsoportot. (Hagyja ki ezt a lépést, ha egy meglévő erőforráscsoportot használ.)

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

Virtuális hálózat és alhálózat létrehozása az Application Gateway számára

Az alábbi példa létrehoz egy virtuális hálózatot és két alhálózatot. A rendszer egy alhálózatot használ az application gateway tárolására. A másik alhálózat a webalkalmazást futtató háttérrendszerekhez használatos.

  1. Rendeljen hozzá egy címtartományt az alkalmazásátjáróhoz használni kívánt alhálózathoz.

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

    Megjegyzés:

    Az application gatewayhez konfigurált alhálózatoknak megfelelő méretűnek kell lenniük. Az application gateway legfeljebb 10 példányhoz konfigurálható. Minden példány egy IP-címet vesz fel az alhálózatról. Az alhálózat túl kicsi mérete hátrányosan befolyásolhatja az application gateway horizontális felskálázását.

  2. Rendeljen hozzá egy címtartományt a háttércímkészlethez.

    $nicSubnet = New-AzVirtualNetworkSubnetConfig  -Name 'appsubnet' -AddressPrefix 10.0.2.0/24
    
  3. Hozzon létre egy virtuális hálózatot az előző lépésekben meghatározott alhálózatokkal.

    $vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnet
    
  4. Kérje le a következő lépésekben használni kívánt virtuális hálózati erőforrást és alhálózati erőforrásokat.

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

Nyilvános IP-cím létrehozása az előtérbeli konfigurációhoz

Hozzon létre egy nyilvános IP-erőforrást az Application Gatewayhez. Ez a nyilvános IP-cím az alábbi lépések egyikében használatos.

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

Fontos

Az Application Gateway nem támogatja a definiált tartománycímkével létrehozott nyilvános IP-címek használatát. Csak a dinamikusan létrehozott tartománycímkével rendelkező nyilvános IP-címek támogatottak. Ha rövid DNS-nevet igényel az application gatewayhez, javasoljuk, hogy használjon egy CNAME rekordot aliasként.

Hozzon létre egy Application Gateway konfigurációs objektumot

Az application gateway létrehozása előtt minden konfigurációelem be van állítva. Az alábbi lépések létrehozzák az Application Gateway erőforráshoz szükséges konfigurációs elemeket.

  1. Hozzon létre egy Application Gateway IP-konfigurációt. Ez a beállítás konfigurálja az Application Gateway által használt alhálózatok közül melyiket. Az Application Gateway indításakor egy IP-címet fogad a konfigurált alhálózatról, és átirányítja a hálózati forgalmat a háttérBELI IP-készlet IP-címeihez. Ne feledje, hogy minden példány egy IP-címet vesz fel.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnet
    
  2. Hozzon létre egy előtérbeli IP-konfigurációt. Ez a beállítás egy privát vagy nyilvános IP-címet képez le az application gateway előtérére. Az alábbi lépés az előző lépésben szereplő nyilvános IP-címet társítja az előtérbeli IP-konfigurációhoz.

    $fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicip
    
  3. Konfigurálja a háttérbeli IP-címkészletet a háttérbeli webkiszolgálók IP-címeivel. Ezek az IP-címek azok az IP-címek, amelyek az előtérbeli IP-végpontról érkező hálózati forgalmat fogadják. Cserélje le a mintában szereplő IP-címeket a saját alkalmazás IP-címvégpontjaira.

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

    Megjegyzés:

    A teljes tartománynév (FQDN) szintén érvényes érték a háttérkiszolgálók IP-címe helyett. Ezt a -BackendFqdns kapcsolóval engedélyezheti.

  4. Konfigurálja a nyilvános IP-végpont előtérbeli IP-portját. Ez a port az a port, amelyhez a végfelhasználók csatlakoznak.

    $fp = New-AzApplicationGatewayFrontendPort -Name 'port01'  -Port 443
    
  5. Konfigurálja az Application Gateway tanúsítványát. Ez a tanúsítvány az application gateway forgalmának visszafejtésére és visszafejtésére szolgál.

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

    Megjegyzés:

    Ez a minta a TLS-kapcsolathoz használt tanúsítványt konfigurálja. A tanúsítványnak .pfx formátumúnak kell lennie.

  6. Hozza létre az Application Gateway HTTP-figyelőt. Rendelje hozzá a használni kívánt előtérbeli IP-konfigurációt, portot és TLS/SSL-tanúsítványt.

    $listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $cert
    
  7. Töltse fel a TLS-kompatibilis háttérkészlet-erőforrásokhoz használandó tanúsítványt.

    Megjegyzés:

    Az alapértelmezett mintavétel a háttérrendszer IP-címén található alapértelmezett TLS-kötésből szerzi be a nyilvános kulcsot, és összehasonlítja az itt megadott nyilvános kulcs értékével.

    Ha gazdagépfejléceket és kiszolgálónév-jelzést (SNI) használ a háttérrendszeren, előfordulhat, hogy a lekért nyilvános kulcs nem az a hely, ahová a forgalom folyik. Ha kétségei vannak, látogasson el https://127.0.0.1/ a háttérkiszolgálókra, és ellenőrizze, hogy melyik tanúsítványt használja a rendszer az alapértelmezett TLS-kötéshez. Használja a jelen szakaszban található kérelem nyilvános kulcsát. Ha gazdagépfejléceket és SNI-t használ HTTPS-kötéseken, és nem kap választ és tanúsítványt a háttérkiszolgálókra irányuló manuális böngészőkérésből https://127.0.0.1/ , be kell állítania egy alapértelmezett TLS-kötést rajtuk. Ha ezt nem teszi meg, a mintavételek sikertelenek, és a háttérrendszer nem engedélyezett.

    Az Application Gateway SNI-jével kapcsolatos további információkért lásd az Application Gateway TLS-leállításának és végpontok közötti TLS-ének áttekintését.

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

    Megjegyzés:

    Az előző lépésben megadott tanúsítványnak a háttérrendszeren található .pfx tanúsítvány nyilvános kulcsának kell lennie. Exportálja a háttérkiszolgálóra telepített tanúsítványt (nem a főtanúsítványt) Jogcím, bizonyíték és érvelés (CER) formátumban, és használja ebben a lépésben. Ez a lépés lehetővé teszi a háttérrendszert az Application Gateway használatával.

    Ha az Application Gateway v2 termékváltozatát használja, hozzon létre egy megbízható főtanúsítványt hitelesítési tanúsítvány helyett. További információ: A végpontok közötti TLS áttekintése az Application Gateway használatával:

    $trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile  <path to root cert file>
    
  8. Konfigurálja az Application Gateway háttérrendszerének HTTP-beállításait. Rendelje hozzá az előző lépésben feltöltött tanúsítványt a HTTP-beállításokhoz.

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

    Az Application Gateway v2 termékváltozatához használja a következő parancsot:

    $poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"
    
  9. Hozzon létre egy terheléselosztó útválasztási szabályt, amely konfigurálja a terheléselosztó viselkedését. Ebben a példában egy alapszintű ciklikus időszeletelési szabály jön létre.

    $rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
    
  10. Konfigurálja az Application Gateway példányméretét. A rendelkezésre álló méretek Standard_Small, Standard_Medium és Standard_Large. Kapacitás esetén a rendelkezésre álló értékek 1 és 10 között vannak.

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

    Megjegyzés:

    Tesztelési célokra 1 példányszám választható ki. Fontos tudni, hogy a két példány alatti példányok száma nem terjed ki az SLA-ra, ezért nem ajánlott. A kis átjárókat fejlesztési teszthez kell használni, nem éles célokra.

  11. Konfigurálja az application gatewayen használandó TLS-szabályzatot. Az Application Gateway támogatja a TLS protokollverziók minimális verziójának beállítását.

    A következő értékek a definiálható protokollverziók listája:

    • TLSV1_0
    • TLSV1_1
    • TLSV1_2

    Az alábbi példa a minimális protokollverziót TLSv1_2 állítja be, és csak TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 és TLS_RSA_WITH_AES_128_GCM_SHA256 engedélyezi.

    $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
    

Application Gateway létrehozása

Az előző lépések végrehajtásával hozza létre az Application Gatewayt. Az átjáró létrehozása olyan folyamat, amely hosszú ideig tart.

V1 termékváltozat esetén használja az alábbi parancsot

$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

V2 termékváltozat esetén használja az alábbi parancsot

$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

Új tanúsítvány alkalmazása, ha a háttértanúsítvány lejárt

Ezzel az eljárással új tanúsítványt alkalmazhat, ha a háttértanúsítvány lejárt.

  1. Kérje le az application gatewayt a frissítéshez.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Adja hozzá az új tanúsítványerőforrást a .cer fájlból, amely tartalmazza a tanúsítvány nyilvános kulcsát, és ugyanazt a tanúsítványt is hozzáadhatja a figyelőhöz a TLS-leállításhoz az Application Gatewayen.

    Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer" 
    
  3. Kérje le az új hitelesítési tanúsítványobjektumot egy változóba (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).

    $AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCert
    
  4. Rendelje hozzá az új tanúsítványt a háttérrendszerhttp-beállításához , és hivatkozzon rá a $AuthCert változóval. (Adja meg a módosítani kívánt HTTP-beállítás nevét.)

$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
  1. Véglegesítse a módosítást az Application Gatewayben, és adja át az új konfigurációt a $out változónak.
Set-AzApplicationGateway -ApplicationGateway $gw  

Nem használt lejárt tanúsítvány eltávolítása a HTTP-Gépház

Ezzel az eljárással eltávolíthat egy nem használt lejárt tanúsítványt a HTTP-Gépház.

  1. Kérje le az application gatewayt a frissítéshez.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Listázhatja az eltávolítani kívánt hitelesítési tanúsítvány nevét.

    Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select name
    
  3. Távolítsa el a hitelesítési tanúsítványt egy application gatewayről.

    $gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCert
    
  4. Véglegesítse a módosítást.

Set-AzApplicationGateway -ApplicationGateway $gw

TLS protokollverziók korlátozása meglévő application gatewayen

Az előző lépések végigvezették egy olyan alkalmazás létrehozásán, amely végpontok közötti TLS-t tartalmaz, és letiltott bizonyos TLS protokollverziókat. Az alábbi példa letilt bizonyos TLS-szabályzatokat egy meglévő application gatewayen.

  1. Kérje le az application gatewayt a frissítéshez.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. TLS-szabályzat definiálása. Az alábbi példában a TLSv1.0 és a TLSv1.1 le van tiltva, és csak a titkosítási csomagok TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 és TLS_RSA_WITH_AES_128_GCM_SHA256 engedélyezettek.

    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. Végül frissítse az átjárót. Ez az utolsó lépés egy hosszú ideig futó feladat. Ha elkészült, a teljes körű TLS konfigurálva lesz az application gatewayen.

    $gw | Set-AzApplicationGateway
    

Application Gateway DNS-név lekérése

Az átjáró létrehozása után a következő lépés az előtér konfigurálása a kommunikációhoz. Az Application Gatewayhez dinamikusan hozzárendelt DNS-névre van szükség nyilvános IP-cím használatakor, ami nem barátságos. Annak érdekében, hogy a végfelhasználók elérhessenek az Application Gatewayre, egy CNAME rekord használatával az application gateway nyilvános végpontjára mutathat. További információ: Egyéni tartománynév konfigurálása az Azure-ban.

Alias konfigurálásához kérje le az application gateway és a hozzá tartozó IP-/DNS-név adatait az application gatewayhez csatolt PublicIPAddress elem használatával. Az Application Gateway DNS-nevének használatával hozzon létre egy CNAME rekordot, amely a két webalkalmazást erre a DNS-névre mutatja. Nem javasoljuk az A-rekordok használatát, mert a VIP megváltozhat az application gateway újraindítása során.

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

Következő lépések

A webalkalmazások biztonságának az Application Gatewayen keresztüli webalkalmazási tűzfallal való korlátozásáról a webalkalmazási tűzfal áttekintésében olvashat bővebben.