تأمين اسم DNS مخصص مع ربط TLS/SSL في خدمة تطبيق Azure

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

Web app with custom TLS/SSL certificate

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

1. إضافة الربط

في مدخل Microsoft Azure:

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

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

  3. بجوار المجال المخصص، حدد إضافة ربط

    A screenshot showing how to launch the Add TLS/SSL Binding dialog.

  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. تدعم معظم المستعرضات الحديثة (بما في ذلك Internet Explorer وChrome وFirefox و Opera) SNI (لمزيد من المعلومات، راجع إشارة اسم الخادم).
      • SSL المستند إلى IP: قد تتم إضافة ربط IP SSL واحد فقط. يسمح هذا الخيار لشهادة TLS/SSL واحدة فقط بتأمين عنوان IP عام مخصص. بعد تكوين الربط، اتبع الخطوات الواردة في 2. إعادة تعيين سجلات SSL المستندة إلى IP.
        يتم دعم IP SSL فقط في المستوى الأساسي أو أعلى.
  6. عند إضافة شهادة جديدة، تحقق من صحة الشهادة الجديدة عن طريق تحديد Validate.

  7. حدد إضافة.

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

    A screenshot showing the custom domain secured by a certificate binding.

إشعار

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

2. إعادة تعيين السجلات ل 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 ).

3. اختبار HTTPS

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

Screenshot showing an example of browsing to your custom domain with the contoso.com URL highlighted.

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

إشعار

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

إذا لم يكن هذا هو الحال، فربما تركت الشهادات المتوسطة عند تصدير الشهادة الخاصة بك إلى ملف 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.

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

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

Azure CLI

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

بوويرشيل

$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

موارد إضافية