تكوين إصدارات سياسة TLS ومجموعات التشفير على بوابة التطبيق

تعرف على كيفية تكوين إصدارات سياسة TLS / SSL ومجموعات التشفير على بوابة التطبيق. يمكنك الاختيار من قائمة السياسات المحددة مسبقًا التي تحتوي على تكوينات مختلفة لإصدارات سياسة TLS ومجموعات التشفير الممكّنة. لديك أيضًا القدرة على تعريف نهج TLS مخصص اعتمادًا على متطلبات.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

إشعار

نوصي باستخدام TLS 1.2 كحد أدنى من إصدار بروتوكول TLS لتحسين الأمان على بوابة التطبيق.

الحصول على خيارات TLS المتوفرة

يوفر الأمر cmdlet Get-AzApplicationGatewayAvailableSslOptions قائمة بالسياسات المحددة مسبقًا ومجموعات التشفير المتوفرة وإصدارات البروتوكول التي يمكن تكوينها. يوضح المثال التالي مثالًا لإخراج من تشغيل الأمر cmdlet.

هام

يتم تعيين نهج TLS الافتراضي إلى AppGwSslPolicy20220101 لإصدارات API 2023-02-01 أو أعلى. تفضل بزيارة نظرة عامة على نهج TLS لمعرفة المزيد.

DefaultPolicy: AppGwSslPolicy20150501
PredefinedPolicies:
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20150501
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20170401
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20170401S
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20220101
    /subscriptions/xxx-xxx/resourceGroups//providers/Microsoft.Network/ApplicationGatewayAvailableSslOptions/default/Applic
ationGatewaySslPredefinedPolicy/AppGwSslPolicy20220101S

AvailableCipherSuites:
    TLS_AES_128_GCM_SHA256
    TLS_AES_256_GCM_SHA384
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_256_GCM_SHA384
    TLS_RSA_WITH_AES_128_GCM_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA256
    TLS_RSA_WITH_AES_128_CBC_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA
    TLS_RSA_WITH_AES_128_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_3DES_EDE_CBC_SHA
    TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA

AvailableProtocols:
    TLSv1_0
    TLSv1_1
    TLSv1_2
    TLSv1_3

سرد سياسات TLS المحددة مسبقًا

تأتي بوابة التطبيق مع نهج متعددة محددة مسبقا يمكن استخدامها. يسترد الأمر cmdlet Get-AzApplicationGatewaySslPredefinedPolicy هذه النُهج. كل سياسة لها إصدارات مختلفة من البروتوكول وتمكين مجموعات التشفير. يمكن استخدام هذه السياسات المحددة مسبقًا لتكوين سياسة TLS بسرعة على بوابة التطبيق الخاصة بك. بشكل افتراضي، يتم تحديد AppGwSslPolicy20150501إذا لم يتم تحديد سياسة TLS معينة.

الإخراج التالي هو مثال على التشغيلGet-AzApplicationGatewaySslPredefinedPolicy.

Name: AppGwSslPolicy20150501
MinProtocolVersion: TLSv1_0
CipherSuites:
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_256_GCM_SHA384
 ...
Name: AppGwSslPolicy20170401
MinProtocolVersion: TLSv1_1
CipherSuites:
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
...

تهيئة نهج TLS مخصص

عند تكوين نهج TLS مخصص، يمكنك تمرير المعلمات التالية: PolicyType وMinProtocolVersion وCipherSuite وApplicationGateway. إذا حاولت تمرير معلمات أخرى، فستتلقى خطأ عند إنشاء أو تحديث بوابة التطبيق. يعيّن المثال التالي نهج TLS مخصصًا على بوابة تطبيق. يقوم بتعيين الحد الأدنى من إصدارTLSv1_1 البروتوكول وتمكين مجموعات التشفير التالية:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
# get an application gateway resource
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroup AdatumAppGatewayRG

# set the TLS policy on the application gateway
Set-AzApplicationGatewaySslPolicy -ApplicationGateway $gw -PolicyType Custom -MinProtocolVersion TLSv1_1 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"

# validate the TLS policy locally
Get-AzApplicationGatewaySslPolicy -ApplicationGateway $gw

# update the gateway with validated TLS policy
Set-AzApplicationGateway -ApplicationGateway $gw

هام

  • إذا كنت تستخدم نهج SSL مخصص في Application Gateway v1 SKU (قياسي أو WAF)، فتأكد من إضافة التشفير الإلزامي "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" إلى القائمة. هذا التشفير مطلوب لتمكين المقاييس وتسجيل الدخول إلى SKU V1 بوابة التطبيق. هذا ليس إلزاميًا لبوابة التطبيق v2 SKU (قياسي 2أو WAF_v2).
  • مجموعات التشفير "TLS_AES_128_GCM_SHA256" و"TLS_AES_256_GCM_SHA384" مع TLSv1.3 غير قابلة للتخصيص ويتم تضمينها بشكل افتراضي عند تعيين نهج CustomV2 مع الحد الأدنى من إصدار TLS من 1.2 أو 1.3. لن تظهر مجموعتا التشفير هاتين في إخراج Get Details، باستثناء Portal.

لتعيين الحد الأدنى لإصدار البروتوكول إلى 1.3، يجب استخدام الأمر التالي:

Set-AzApplicationGatewaySslPolicy -ApplicationGateway $AppGW -MinProtocolVersion TLSv1_3 -PolicyType CustomV2 -CipherSuite @()

يشرح هذا الرسم التوضيحي أيضا استخدام نهج CustomV2 مع الحد الأدنى من إصدارات البروتوكول 1.2 و1.3.

رسم تخطيطي يوضح استخدام معلمة التشفير لنهج CustomV2.

إنشاء بوابة تطبيق بسياسة TLS المحددة مسبقًا

عند تكوين نهج TLS محدد مسبقًا، يمكنك تمرير المعلمات التالية: PolicyType وPolicyName وApplicationGateway. إذا حاولت تمرير معلمات أخرى، فستتلقى خطأ عند إنشاء أو تحديث بوابة التطبيق.

ينشئ المثال التالي بوابة تطبيق جديدة بسياسة TLS المحددة مسبقًا.

# Create a resource group
$rg = New-AzResourceGroup -Name ContosoRG -Location "East US"

# Create a subnet for the application gateway
$subnet = New-AzVirtualNetworkSubnetConfig -Name subnet01 -AddressPrefix 10.0.0.0/24

# Create a virtual network with a 10.0.0.0/16 address space
$vnet = New-AzVirtualNetwork -Name appgwvnet -ResourceGroupName $rg.ResourceGroupName -Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $subnet

# Retrieve the subnet object for later use
$subnet = $vnet.Subnets[0]

# Create a public IP address
$publicip = New-AzPublicIpAddress -ResourceGroupName $rg.ResourceGroupName -name publicIP01 -location "East US" -AllocationMethod Dynamic

# Create an ip configuration object
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name gatewayIP01 -Subnet $subnet

# Create a backend pool for backend web servers
$pool = New-AzApplicationGatewayBackendAddressPool -Name pool01 -BackendIPAddresses 134.170.185.46, 134.170.188.221,134.170.185.50

# Define the backend http settings to be used.
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name poolsetting01 -Port 80 -Protocol Http -CookieBasedAffinity Enabled

# Create a new port for TLS
$fp = New-AzApplicationGatewayFrontendPort -Name frontendport01  -Port 443

# Upload an existing pfx certificate for TLS offload
$password = ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force
$cert = New-AzApplicationGatewaySslCertificate -Name cert01 -CertificateFile C:\folder\contoso.pfx -Password $password

# Create a frontend IP configuration for the public IP address
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name fipconfig01 -PublicIPAddress $publicip

# Create a new listener with the certificate, port, and frontend ip.
$listener = New-AzApplicationGatewayHttpListener -Name listener01  -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SslCertificate $cert

# Create a new rule for backend traffic routing
$rule = New-AzApplicationGatewayRequestRoutingRule -Name rule01 -RuleType Basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

# Define the size of the application gateway
$sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2

# Configure the TLS policy to use a different pre-defined policy
$policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20170401S

# Create the application gateway.
$appgw = New-AzApplicationGateway -Name appgwtest -ResourceGroupName $rg.ResourceGroupName -Location "East US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig  -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslCertificates $cert -SslPolicy $policy

تحديث بوابة تطبيق موجودة بسياسة TLS المحددة مسبقًا

لتعيين نهج TLS مخصص، قم بتمرير المعلمات التالية: PolicyType و MinProtocolVersion و CipherSuite وApplicationGateway. لتعيين نهج TLS محدد مسبقًا، قم بتمرير المعلمات التالية: PolicyType و PolicyName و ApplicationGateway. إذا حاولت تمرير معلمات أخرى، فستتلقى خطأ عند إنشاء أو تحديث بوابة التطبيق.

إشعار

يؤدي استخدام نهج مخصص أو Customv2 جديد إلى تحسين أمان SSL ووضعية الأداء للبوابة بأكملها (نهج SSL وملف تعريف SSL). ومن ثم، لا يمكن أن تتعايش السياسات القديمة والجديدة. يطلب منك استخدام أي من النهج القديمة المعرفة مسبقا أو المخصصة عبر البوابة، في حالة وجود عملاء يحتاجون إلى إصدار أو شفرات TLS أقدم (على سبيل المثال، TLS v1.0).

في المثال التالي، توجد نماذج تعليمات برمجية لكل من النهج المخصص والنهج المحدد مسبقًا. قم بإلغاء التعليق على السياسة التي تريد استخدامها.

# You have to change these parameters to match your environment.
$AppGWname = "YourAppGwName"
$RG = "YourResourceGroupName"

$AppGw = get-Azapplicationgateway -Name $AppGWname -ResourceGroupName $RG

# Choose either custom policy or predefined policy and uncomment the one you want to use.

# TLS Custom Policy
# Set-AzApplicationGatewaySslPolicy -PolicyType Custom -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA256" -ApplicationGateway $AppGw

# TLS Predefined Policy
# Set-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401S" -ApplicationGateway $AppGW

# Update AppGW
# The TLS policy options are not validated or updated on the Application Gateway until this cmdlet is executed.
$SetGW = Set-AzApplicationGateway -ApplicationGateway $AppGW

الخطوات التالية

قم بزيارة نظرة عامة على إعادة توجيه Application Gateway للتعرف على كيفية إعادة توجيه حركة مرور HTTP إلى نقطة نهاية HTTPS.

تحقق من إعداد سياسات SSL محددة المستمع عندإعداد سياسة محددة لمستمع SSL من خلال Portal