PowerShell ile Application Gateway'i kullanarak uçtan uca TLS'yi yapılandırma

Genel Bakış

Azure Uygulaması Lication Gateway, trafiğin uçtan uca şifrelenmesini destekler. Application Gateway, uygulama ağ geçidinde TLS/SSL bağlantısını sonlandırır. Ağ geçidi daha sonra yönlendirme kurallarını trafiğe uygular, paketi yeniden şifreler ve tanımlanan yönlendirme kurallarına göre paketi uygun arka uç sunucusuna iletir. Web sunucusundan alınan herhangi bir yanıt, son kullanıcıya dönerken aynı süreci izler.

Application Gateway, özel TLS seçeneklerinin tanımlanmasını destekler. Ayrıca şu protokol sürümlerini devre dışı bırakmayı da destekler: TLSv1.0, TLSv1.1 ve TLSv1.2, ayrıca hangi şifreleme paketlerinin kullanılacağını ve tercih sırasını tanımlama. Yapılandırılabilir TLS seçenekleri hakkında daha fazla bilgi edinmek için bkz. TLS ilkesine genel bakış.

Dekont

SSL 2.0 ve SSL 3.0 varsayılan olarak devre dışıdır ve etkinleştirilemez. Bunlar güvenli değil olarak kabul edilir ve Application Gateway ile kullanılamaz.

scenario image

Senaryo

Bu senaryoda, PowerShell ile uçtan uca TLS kullanarak bir uygulama ağ geçidi oluşturmayı öğreneceksiniz.

Bu senaryo şu şekilde olacaktır:

  • appgw-rg adlı bir kaynak grubu oluşturun.
  • Adres alanı 10.0.0.0/16 olan appgwvnet adlı bir sanal ağ oluşturun.
  • appgwsubnet ve appsubnet adlı iki alt ağ oluşturun.
  • TLS protokol sürümlerini ve şifre paketlerini sınırlayan uçtan uca TLS şifrelemesini destekleyen küçük bir uygulama ağ geçidi oluşturun.

Başlamadan önce

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Uçtan uca TLS'yi bir uygulama ağ geçidi ile yapılandırmak için ağ geçidi için bir sertifika ve arka uç sunucuları için sertifikalar gerekir. Ağ geçidi sertifikası, TLS protokol belirtimine göre simetrik anahtar türetmek için kullanılır. Simetrik anahtar daha sonra ağ geçidine gönderilen trafiği şifreleyip şifresini çözer. Ağ geçidi sertifikasının Kişisel Bilgi Değişimi (PFX) biçiminde olması gerekir. Bu dosya biçimi, trafiğin şifrelenmesini ve şifresinin çözülmesini gerçekleştirmek için uygulama ağ geçidinin gerektirdiği özel anahtarı dışarı aktarmanızı sağlar.

Uçtan uca TLS şifrelemesi için arka uca uygulama ağ geçidi tarafından açıkça izin verilmelidir. Arka uç sunucularının genel sertifikasını uygulama ağ geçidine yükleyin. Sertifikanın eklenmesi, uygulama ağ geçidinin yalnızca bilinen arka uç örnekleriyle iletişim kurmasını sağlar. Bu, uçtan uca iletişimin güvenliğini daha da sağlar.

Yapılandırma işlemi aşağıdaki bölümlerde açıklanmıştır.

Bir kaynak grubu oluştur

Bu bölüm, uygulama ağ geçidini içeren bir kaynak grubu oluşturma işleminde size yol gösterir.

  1. Azure hesabınızda oturum açın.

    Connect-AzAccount
    
  2. Bu senaryo için kullanılacak aboneliği seçin.

    Select-Azsubscription -SubscriptionName "<Subscription name>"
    
  3. Kaynak grubu oluşturun. (Mevcut bir kaynak grubunu kullanıyorsanız bu adımı atlayın.)

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

Uygulama ağ geçidi için bir sanal ağ ve bir alt ağ oluşturun

Aşağıdaki örnek bir sanal ağ ve iki alt ağ oluşturur. Uygulama ağ geçidini tutmak için bir alt ağ kullanılır. Diğer alt ağ, web uygulamasını barındıran arka uçlar için kullanılır.

  1. Uygulama ağ geçidi için kullanılacak alt ağ için bir adres aralığı atayın.

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

    Dekont

    Uygulama ağ geçidi için yapılandırılan alt ağlar düzgün boyutlandırılmalıdır. Bir uygulama ağ geçidi en fazla 10 örnek için yapılandırılabilir. Her örnek alt ağdan bir IP adresi alır. Alt ağın çok küçük bir kısmı uygulama ağ geçidinin ölçeğini genişletmeyi olumsuz etkileyebilir.

  2. Arka uç adres havuzu için kullanılacak bir adres aralığı atayın.

    $nicSubnet = New-AzVirtualNetworkSubnetConfig  -Name 'appsubnet' -AddressPrefix 10.0.2.0/24
    
  3. Önceki adımlarda tanımlanan alt ağlarla bir sanal ağ oluşturun.

    $vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnet
    
  4. İzleyen adımlarda kullanılacak sanal ağ kaynağını ve alt ağ kaynaklarını alın.

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

Ön uç yapılandırması için genel IP adresi oluşturma

Uygulama ağ geçidi için kullanılacak bir genel IP kaynağı oluşturun. Bu genel IP adresi, izleyen adımlardan birinde kullanılır.

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

Önemli

Application Gateway, tanımlı bir etki alanı etiketiyle oluşturulan genel IP adresinin kullanımını desteklemez. Yalnızca dinamik olarak oluşturulan bir etki alanı etiketine sahip genel IP adresi desteklenir. Uygulama ağ geçidi için kolay bir DNS adı gerekiyorsa, diğer ad olarak bir CNAME kaydı kullanmanızı öneririz.

Uygulama ağ geçidi yapılandırma nesnesi oluşturun

Tüm yapılandırma öğeleri, uygulama ağ geçidi oluşturulmadan önce ayarlanır. Aşağıdaki adımlar uygulama ağ geçidi kaynağı için gerekli yapılandırma öğelerini oluşturur.

  1. Uygulama ağ geçidi IP yapılandırması oluşturun. Bu ayar, uygulama ağ geçidinin hangi alt ağları kullandığını yapılandırıyor. Uygulama ağ geçidi başlatıldığında, yapılandırılan alt ağdan bir IP adresi alır ve ağ trafiğini arka uç IP havuzundaki IP adreslerine yönlendirir. Her örneğin bir IP adresi aldığını göz önünde bulundurun.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnet
    
  2. Ön uç IP yapılandırması oluşturun. Bu ayar, özel veya genel bir IP adresini uygulama ağ geçidinin ön ucuna eşler. Aşağıdaki adım, önceki adımda yer alan genel IP adresini ön uç IP yapılandırmasıyla ilişkilendirir.

    $fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicip
    
  3. Arka uç IP adresi havuzunu arka uç web sunucularının IP adresleriyle yapılandırın. Bu IP adresleri, ön uç IP uç noktasından gelen ağ trafiğini alan IP adresleridir. Örnekteki IP adreslerini kendi uygulama IP adresi uç noktalarınızla değiştirin.

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

    Dekont

    Tam etki alanı adı (FQDN), arka uç sunucuları için ip adresi yerine kullanılacak geçerli bir değerdir. -BackendFqdns anahtarını kullanarak etkinleştirebilirsiniz.

  4. Genel IP uç noktası için ön uç IP bağlantı noktasını yapılandırın. Bu bağlantı noktası, son kullanıcıların bağlanacakları bağlantı noktasıdır.

    $fp = New-AzApplicationGatewayFrontendPort -Name 'port01'  -Port 443
    
  5. Uygulama ağ geçidi için sertifikayı yapılandırın. Bu sertifika, uygulama ağ geçidindeki trafiğin şifresini çözmek ve trafiği yeniden şifrelemek için kullanılır.

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

    Dekont

    Bu örnek TLS bağlantısı için kullanılan sertifikayı yapılandırıyor. Sertifikanın .pfx biçiminde olması gerekir.

  6. Uygulama ağ geçidi için HTTP dinleyicisi oluşturun. Kullanılacak ön uç IP yapılandırmasını, bağlantı noktasını ve TLS/SSL sertifikasını atayın.

    $listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $cert
    
  7. TLS özellikli arka uç havuzu kaynaklarında kullanılacak sertifikayı karşıya yükleyin.

    Dekont

    Varsayılan yoklama, arka ucun IP adresindeki varsayılan TLS bağlamasından ortak anahtarı alır ve aldığı ortak anahtar değerini burada sağladığınız ortak anahtar değeriyle karşılaştırır.

    Arka uçta konak üst bilgileri ve Sunucu Adı Göstergesi (SNI) kullanıyorsanız, alınan ortak anahtar trafiğin aktığı hedeflenen site olmayabilir. Şüpheniz varsa, varsayılan TLS bağlaması için hangi sertifikanın kullanıldığını onaylamak için arka uç sunucularını ziyaret https://127.0.0.1/ edin. Bu bölümdeki istekte yer alan ortak anahtarı kullanın. HTTPS bağlamalarında konak üst bilgileri ve SNI kullanıyorsanız ve arka uç sunucularında el ile yapılan bir tarayıcı isteğinden https://127.0.0.1/ yanıt ve sertifika almıyorsanız, bunlar üzerinde varsayılan bir TLS bağlaması ayarlamanız gerekir. Bunu yapmazsanız, yoklamalar başarısız olur ve arka uca izin verilmez.

    Application Gateway'de SNI hakkında daha fazla bilgi için bkz . Application Gateway ile TLS sonlandırma ve uçtan uca TLS'ye genel bakış.

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

    Dekont

    Önceki adımda sağlanan sertifika, arka uçta bulunan .pfx sertifikasının ortak anahtarı olmalıdır. Arka uç sunucusunda yüklü olan sertifikayı (kök sertifika değil) Talep, Kanıt ve Mantık (CER) biçiminde dışarı aktarın ve bu adımda kullanın. Bu adım, arka ucun uygulama ağ geçidiyle birlikte kullanılmasına olanak tanır.

    Application Gateway v2 SKU kullanıyorsanız, kimlik doğrulama sertifikası yerine güvenilir bir kök sertifika oluşturun. Daha fazla bilgi için bkz . Application Gateway ile uçtan uca TLS'ye genel bakış:

    $trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile  <path to root cert file>
    
  8. Uygulama ağ geçidi arka ucu için HTTP ayarlarını yapılandırın. Önceki adımda karşıya yüklenen sertifikayı HTTP ayarlarına atayın.

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

    Application Gateway v2 SKU'su için aşağıdaki komutu kullanın:

    $poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"
    
  9. Yük dengeleyici davranışını yapılandıran bir yük dengeleyici yönlendirme kuralı oluşturun. Bu örnekte temel bir hepsini bir kez deneme kuralı oluşturulur.

    $rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
    
  10. Uygulama ağ geçidinin örnek boyutunu yapılandırın. Kullanılabilir boyutlar Standard_Small, Standard_Medium ve Standard_Large. Kapasite için kullanılabilir değerler 1 ile 10 arasındadır.

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

    Dekont

    Test amacıyla 1 örnek sayısı seçilebilir. İki örneğin altındaki örnek sayısının SLA kapsamında olmadığını ve bu nedenle önerilmez olduğunu bilmek önemlidir. Küçük ağ geçitleri üretim amacıyla değil geliştirme testi için kullanılır.

  11. Uygulama ağ geçidinde kullanılacak TLS ilkesini yapılandırın. Application Gateway, TLS protokol sürümleri için en düşük sürümü ayarlama özelliğini destekler.

    Aşağıdaki değerler tanımlanabilir protokol sürümlerinin listesidir:

    • TLSV1_0
    • TLSV1_1
    • TLSV1_2

    Aşağıdaki örnek en düşük protokol sürümünü TLSv1_2 olarak ayarlar ve yalnızca TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ve TLS_RSA_WITH_AES_128_GCM_SHA256 etkinleştirir.

    $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
    

Uygulama ağ geçidi oluşturma

Önceki tüm adımları kullanarak uygulama ağ geçidini oluşturun. Ağ geçidinin oluşturulması, çalıştırılması uzun süren bir işlemdir.

V1 SKU için aşağıdaki komutu kullanın

$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 SKU için aşağıdaki komutu kullanın

$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

Arka uç sertifikasının süresi dolduysa yeni sertifika uygulama

Arka uç sertifikasının süresi dolduysa yeni bir sertifika uygulamak için bu yordamı kullanın.

  1. Güncelleştirilecek uygulama ağ geçidini alın.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Sertifikanın ortak anahtarını içeren ve uygulama ağ geçidinde TLS sonlandırması için dinleyiciye eklenen sertifikayla aynı olabilecek .cer dosyasından yeni sertifika kaynağını ekleyin.

    Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer" 
    
  3. Yeni kimlik doğrulama sertifikası nesnesini bir değişkene alın (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).

    $AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCert
    
  4. Yeni sertifikayı BackendHttp Ayarına atayın ve $AuthCert değişkenine başvurun. (Değiştirmek istediğiniz HTTP ayarı adını belirtin.)

$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
  1. Değişikliği uygulama ağ geçidine işleyin ve içindeki yeni yapılandırmayı $out değişkenine geçirin.
Set-AzApplicationGateway -ApplicationGateway $gw  

Http Ayarlar kullanılmayan süresi dolmuş sertifikayı kaldırma

Http Ayarlar kullanılmayan süresi dolmuş bir sertifikayı kaldırmak için bu yordamı kullanın.

  1. Güncelleştirilecek uygulama ağ geçidini alın.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. Kaldırmak istediğiniz kimlik doğrulama sertifikasının adını listeleyin.

    Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select name
    
  3. Kimlik doğrulama sertifikasını bir uygulama ağ geçidinden kaldırın.

    $gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCert
    
  4. Değişikliği işleyin.

Set-AzApplicationGateway -ApplicationGateway $gw

Mevcut bir uygulama ağ geçidinde TLS protokolü sürümlerini sınırlama

Yukarıdaki adımlar, uçtan uca TLS ile uygulama oluşturma ve belirli TLS protokolü sürümlerini devre dışı bırakma adımlarını tamamladı. Aşağıdaki örnek, mevcut bir uygulama ağ geçidinde belirli TLS ilkelerini devre dışı bırakır.

  1. Güncelleştirilecek uygulama ağ geçidini alın.

    $gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
    
  2. TLS ilkesi tanımlayın. Aşağıdaki örnekte TLSv1.0 ve TLSv1.1 devre dışı bırakılmıştır ve yalnızca şifre paketleri TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ve TLS_RSA_WITH_AES_128_GCM_SHA256 izin verilir.

    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. Son olarak ağ geçidini güncelleştirin. Bu son adım uzun süre çalışan bir görevdir. İşlem tamamlandığında, uygulama ağ geçidinde uçtan uca TLS yapılandırılır.

    $gw | Set-AzApplicationGateway
    

Uygulama ağ geçidi DNS adı alma

Ağ geçidi oluşturulduktan sonra, bir sonraki adım iletişim için ön ucu yapılandırmaktır. Application Gateway, genel IP kullanırken dinamik olarak atanmış bir DNS adı gerektirir ve bu kolay değildir. Son kullanıcıların uygulama ağ geçidine ulaşmasını sağlamak için bir CNAME kaydı kullanarak uygulama ağ geçidinin genel uç noktasına işaret edebilirsiniz. Daha fazla bilgi için bkz . Azure'da için özel etki alanı adı yapılandırma.

Diğer adı yapılandırmak için, uygulama ağ geçidine bağlı PublicIPAddress öğesini kullanarak uygulama ağ geçidinin ve ilişkili IP/DNS adının ayrıntılarını alın. uygulama ağ geçidinin DNS adını kullanarak iki web uygulamasını bu DNS adına işaret eden bir CNAME kaydı oluşturun. VIP, uygulama ağ geçidinin yeniden başlatılmasında değişebileceğinden A kayıtlarının kullanılmasını önermiyoruz.

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

Sonraki adımlar

Application Gateway aracılığıyla Web Uygulaması Güvenlik Duvarı ile web uygulamalarınızın güvenliğini sağlamlaştırma hakkında daha fazla bilgi için bkz. Web uygulaması güvenlik duvarına genel bakış.