مشاركة عبر


تكوين المصادقة المتبادلة مع Application Gateway من خلال PowerShell

توضح هذه المقالة كيفية استخدام PowerShell لتكوين المصادقة المتبادلة على بوابة التطبيق. تعني المصادقة المتبادلة أن Application Gateway تصادق العميل الذي يرسل الطلب باستخدام شهادة العميل التي تحملها على بوابة التطبيق.

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

Note

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

تتطلب هذه المقالة إصدار الوحدة النمطية Azure PowerShell 1.0.0 أو أحدث. قم بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. في حالة تشغيل PowerShell محليًا، فأنت بحاجة أيضًا إلى تشغيل Connect-AzAccount لإنشاء اتصال مع Azure.

قبل البدء

لتكوين المصادقة المتبادلة مع بوابة التطبيق، تحتاج إلى شهادة عميل لتحميلها إلى البوابة. يتم استخدام شهادة العميل للتحقق من صحة الشهادة التي يقدمها العميل إلى Application Gateway. لأغراض الاختبار، يمكنك استخدام شهادة موقعة ذاتيا. ومع ذلك، لا ينصح بذلك لأحمال عمل الإنتاج، لأنها صعبة الإدارة وليست آمنة تماما.

لمعرفة المزيد، خاصة حول نوع شهادات العميل التي يمكنك تحميلها، راجع نظرة عامة على المصادقة المتبادلة مع Application Gateway.

إنشاء مجموعة موارد

قم أولا بإنشاء مجموعة موارد جديدة في اشتراكك.

$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}

إنشاء شبكة ظاهرية

نشر شبكة ظاهرية لبوابة التطبيق الخاصة بك ليتم نشرها فيها.

$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet
$vnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -VirtualNetwork $vnet

إنشاء IP عام

إنشاء IP عام لاستخدامه مع بوابة التطبيق الخاصة بك.

$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard

إنشاء تكوين IP لبوابة التطبيق

إنشاء تكوينات IP ومنفذ الواجهة الأمامية.

$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName  -Port 443

تكوين TLS/SSL للواجهة الأمامية

تكوين شهادات TLS/SSL لبوابة التطبيق الخاصة بك.

$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password

تكوين مصادقة العميل

تكوين مصادقة العميل على بوابة التطبيق. لمزيد من المعلومات حول كيفية استخراج سلاسل شهادات CA للعميل الموثوق بها لاستخدامها هنا، راجع كيفية استخراج سلاسل شهادات CA للعميل الموثوق بها.

Important

تأكد من تحميل سلسلة شهادات CA للعميل بالكامل في ملف واحد، وسلسلة واحدة فقط لكل ملف. يجب أن يكون الحد الأقصى لحجم كل ملف تم تحميله 25 كيلوبايت أو أقل.

Note

نوصي باستخدام TLS 1.2 مع المصادقة المتبادلة حيث سيتم تفويض TLS 1.2 بدءا من 31 أغسطس 2025.

$clientCertFilePath = $basedir + "/ScenarioTests/Data/TrustedClientCertificate.cer"
$trustedClient01 = New-AzApplicationGatewayTrustedClientCertificate -Name $trustedClientCert01Name -CertificateFile $clientCertFilePath
$sslPolicy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401S"
$clientAuthConfig = New-AzApplicationGatewayClientAuthConfiguration -VerifyClientCertIssuerDN
$sslProfile01 = New-AzApplicationGatewaySslProfile -Name $sslProfile01Name -SslPolicy $sslPolicy -ClientAuthConfiguration $clientAuthConfig -TrustedClientCertificates $trustedClient01
$listener = New-AzApplicationGatewayHttpListener -Name $listenerName -Protocol Https -SslCertificate $sslCert -FrontendIPConfiguration $fipconfig -FrontendPort $port -SslProfile $sslProfile01

تكوين تجمع الخلفية والإعدادات

إعداد تجمع الخلفية والإعدادات لبوابة التطبيق الخاصة بك. اختياريا، قم بإعداد شهادة الجذر الموثوق بها الخلفية لتشفير TLS/SSL من طرف إلى طرف.

$certFilePath = $basedir + "/ScenarioTests/Data/ApplicationGatewayAuthCert.cer"
$trustedRoot = New-AzApplicationGatewayTrustedRootCertificate -Name $trustedRootCertName -CertificateFile $certFilePath
$pool = New-AzApplicationGatewayBackendAddressPool -Name $poolName -BackendIPAddresses www.microsoft.com, www.bing.com
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name $poolSettingName -Port 443 -Protocol Https -CookieBasedAffinity Enabled -PickHostNameFromBackendAddress -TrustedRootCertificate $trustedRoot

تكوين القاعدة

إعداد قاعدة على بوابة التطبيق.

$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

إعداد نهج TLS/SSL الافتراضي للمستمعين المستقبليين

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

$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"

أنشئ بوابة التطبيق

باستخدام كل شيء أنشأناه، انشر بوابة التطبيق الخاصة بك.

$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname -Zone 1,2 -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $port -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslPolicy $sslPolicyGlobal -TrustedRootCertificate $trustedRoot -AutoscaleConfiguration $autoscaleConfig -TrustedClientCertificates $trustedClient01 -SslProfiles $sslProfile01 -SslCertificates $sslCert

تنظيف الموارد

عندما لا تكون هناك حاجة إليها، قم بإزالة مجموعة الموارد وبوابة التطبيق وجميع الموارد ذات الصلة باستخدام Remove-AzResourceGroup.

Remove-AzResourceGroup -Name $rgname

تجديد شهادات المرجع المصدق للعميل منتهية الصلاحية

في حالة انتهاء صلاحية شهادة المرجع المصدق للعميل، يمكنك تحديث الشهادة على البوابة الخاصة بك من خلال الخطوات التالية:

  1. تسجيل الدخول إلى Azure
    Connect-AzAccount
    Select-AzSubscription -Subscription "<sub name>"
    
  2. الحصول على تكوين بوابة التطبيق
    $gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
    
  3. إزالة شهادة العميل الموثوق بها من البوابة
    Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
    
  4. إضافة الشهادة الجديدة إلى البوابة
    Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
    
  5. تحديث البوابة بالشهادة الجديدة
    Set-AzApplicationGateway -ApplicationGateway $gateway
    

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