توفير الأمان لاسم DNS مخصص مع ربط TLS/SSL في App Service

توضح لك هذه المقالة كيفية توفير الأمان للمجال المخصص في تطبيق App Service أو تطبيق الوظائف عن طريق إنشاء ربط شهادة. عند الانتهاء، يمكنك الوصول إلى تطبيق App Service الخاص بك في https:// نقطة النهاية لاسم DNS المخصص (على سبيل المثال، https://www.contoso.com).

تطبيق ويب مع شهادة TLS/SSL مخصصة.

المتطلبات الأساسية

إضافة الربط

في مدخل Microsoft Azure:

  1. من القائمة اليسرى، حدد App Services><app-name.>

  2. من شريط التنقل الأيمن لتطبيقك، حدد مجالات مخصصة.

  3. بجوار المجال المخصص، حدد Add binding.

    لقطة شاشة توضح كيفية تشغيل مربع الحوار Add TLS/SSL Binding.

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

    • إنشاء شهادة مدارة لخدمة التطبيقات - اسمح ل App Service بإنشاء شهادة مدارة للمجال المحدد. هذا الخيار هو الأسهل. لمزيد من المعلومات، راجع إنشاء شهادة مدارة مجانية.
    • استيراد شهادة App Service - في App Service Certificate، حدد شهادة App Service التي اشتريتها للمجال المحدد.
    • تحميل الشهادة (.pfx) - اتبع سير العمل في تحميل شهادة خاصة لتحميل شهادة PFX من جهازك المحلي وتحديد كلمة مرور الشهادة.
    • استيراد من Key Vault - حدد Select key vault certificate وحدد الشهادة في مربع الحوار.
  5. في نوع TLS/SSL، حدد إما SNI SSL أو SSL المستند إلى IP.

    • SNI SSL: يمكن إضافة روابط SNI SSL متعددة. يسمح هذا الخيار لعدة شهادات TLS/SSL للمساعدة في تأمين مجالات متعددة على نفس عنوان IP. تدعم معظم المستعرضات الحديثة (بما في ذلك Microsoft Edge وChrome وFirefox و Opera) SNI. (لمزيد من المعلومات، راجع إشارة اسم الخادم.)
    • SSL المستند إلى IP: يمكن إضافة ربط IP SSL واحد فقط. يسمح هذا الخيار بشهادة TLS/SSL واحدة فقط للمساعدة في تأمين عنوان IP عام مخصص. بعد تكوين الربط، اتبع الخطوات الواردة في سجلات إعادة تعيين SSL المستندة إلى IP.
      يتم دعم SSL المستند إلى IP فقط في المستوى القياسي أو أعلى.
  6. عند إضافة شهادة جديدة، تحقق من صحة الشهادة الجديدة عن طريق تحديد Validate.

  7. حدد إضافة.

    بمجرد اكتمال العملية، يتم تغيير حالة TLS/SSL للمجال المخصص إلى Secured.

    لقطة شاشة تعرض المجال المخصص المؤمن بواسطة ربط الشهادة.

إشعار

تعني الحالة الآمنة في المجالات المخصصة أن الشهادة توفر الأمان، ولكن App Service لا تتحقق مما إذا كانت الشهادة موقعة ذاتيا أو منتهية الصلاحية، على سبيل المثال، مما قد يؤدي أيضا إلى ظهور خطأ أو تحذير في المستعرضات.

إعادة تعيين سجلات SSL المستندة إلى IP

هذه الخطوة مطلوبة فقط ل SSL المستندة إلى IP. بالنسبة لربط SNI SSL، انتقل إلى اختبار HTTPS.

من المحتمل أن يكون هناك تغييران تحتاجان إلى إجراءهما:

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

    يتم تحديث صفحة المجال المخصص لتطبيقك بعنوان IP المخصص الجديد. انسخ عنوان IP هذا، ثم أعد تعيين السجل A إلى عنوان IP الجديد هذا.

  • إذا كان لديك ربط SNI SSL ب <app-name>.azurewebsites.net، أعد تعيين أي تعيين CNAME للإشارة إليه sni.<app-name>.azurewebsites.net بدلا من ذلك. (إضافة البادئة sni .)

اختبار HTTPS

استعرض للوصول إلى https://<your.custom.domain> في مستعرضات مختلفة للتحقق من ظهور تطبيقك.

لقطة شاشة تعرض مثالا للاستعراض إلى مجالك المخصص. يتم تمييز عنوان URL contoso.com.

يمكن للتعليمات البرمجية للتطبيق فحص البروتوكول عبر x-appservice-proto العنوان. يحتوي العنوان على قيمة أو http https.

إشعار

إذا كان تطبيقك يعطيك أخطاء التحقق من صحة الشهادة، فمن المحتمل أنك تستخدم شهادة موقعة ذاتيًا.

إذا لم يكن الأمر كذلك، فربما تكون قد تركت شهادات وسيطة عند تصدير شهادتك إلى ملف PFX.

الأسئلة الشائعة

كيف أعمل تأكد من عدم تغيير عنوان IP للتطبيق عند إجراء تغييرات على ربط الشهادة؟

يمكن تغيير عنوان IP الوارد عند حذف ربط، حتى إذا كان هذا الربط هو IP SSL. هذا الأمر مهم خصوصًا عند تجديد شهادة موجودة بالفعل في ربط SSL IP. لتجنب حدوث تغيير في عنوان IP للتطبيق، اتبع الخطوات التالية بالترتيب:

  1. قم بتحميل الشهادة الجديدة.
  2. اربط الشهادة الجديدة بالمجال المخصص الذي تريده دون حذف القديم. يؤدي هذا الإجراء إلى استبدال الربط بدلاً من إزالة القديم.
  3. احذف الشهادة القديمة.

هل يمكنني تعطيل إعادة التوجيه القسري من HTTP إلى HTTPS؟

بشكل افتراضي، تفرض App Service إعادة توجيه من طلبات HTTP إلى HTTPS. لتعطيل هذا السلوك، راجع تكوين الإعدادات العامة.

كيف يمكنني تغيير الحد الأدنى من إصدارات TLS للتطبيق؟

يسمح تطبيقك ب TLS 1.2 بشكل افتراضي، وهو مستوى TLS الموصى به حسب معايير الصناعة، مثل PCI DSS. لفرض إصدارات TLS مختلفة، راجع تكوين الإعدادات العامة.

كيف أعمل التعامل مع إنهاء TLS في App Service؟

في App Service، يحدث إنهاء TLS في موازنات تحميل الشبكة، بحيث تصل جميع طلبات HTTPS إلى تطبيقك كطلبات HTTP غير مشفرة. إذا كان منطق التطبيق يحتاج إلى التحقق مما إذا كانت طلبات المستخدم مشفرة، فافحص X-Forwarded-Proto العنوان.

توضح أدلة التكوين الخاصة باللغة، مثل دليل تكوين Node.js Linux، كيفية الكشف عن جلسة HTTPS في التعليمات البرمجية للتطبيق الخاص بك.

الأتمتة باستخدام البرامج النصية

Azure CLI

ربط شهادة TLS/SSL مخصصة بتطبيق ويب

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
$webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Sign in to your domain provider's website and configure the following records:"
Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled