إنشاء شهادة موقعة ذاتياً من Azure Application Gateway باستخدام مرجع مصدق جذر مخصص

يقدم Application Gateway v2 SKU استخدام الشهادات الجذر الموثوق بها للسماح باتصالات TLS مع الخوادم الخلفية. يزيل هذا الحكم استخدام شهادات المصادقة (شهادات طرفية فردية) المطلوبة في وحدة حفظ المخزون v1. الشهادة الجذر هي شهادة جذر بتنسيق X.509(.CER) بترميز Base-64 من خادم شهادة الواجهة الخلفية. يحدد المرجع المصدق الجذر (CA) الذي أصدر شهادة الخادم ثم يتم استخدام شهادة الخادم لاتصال TLS/SSL.

تثق بوابة التطبيق في شهادة موقع الويب الخاص بك بشكل افتراضي إذا كانت موقعة من قِبل مرجع مصدق معروف (على سبيل المثال، GoDaddy أو DigiCert). لا تحتاج إلى تحميل شهادة الجذر بشكل صريح في هذه الحالة. لمزيد من المعلومات، راجع نظرة عامة على إنهاء TLS وطبقة النقل الآمنة (TLS) من طرف إلى طرف مع بوابة التطبيق. ومع ذلك، إذا كانت لديك بيئة تطوير/اختبار ولا تريد شراء شهادة موقعة من المرجع المصدق تم التحقق منها، يمكنك إنشاء المرجع المصدق الجذر المخصص الخاص بك وشهادة طرفية موقعة من قبل المرجع المصدق الجذر هذا.

إشعار

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

يمكنك استخدام الخيارات التالية لإنشاء شهادتك الخاصة لاتصالات TLS الخلفية.

  1. استخدم أداة منشئ الشهادة الخاصة بنقرة واحدة. باستخدام اسم المجال (الاسم الشائع) الذي توفره، تنفذ هذه الأداة نفس الخطوات الموثقة في هذه المقالة لإنشاء شهادات الجذر والخادم. مع ملفات الشهادة التي تم إنشاؤها، يمكنك تحميل الشهادة الجذر (على الفور. CER) إلى إعداد الواجهة الخلفية للبوابة وسلسلة الشهادات المقابلة (. PFX) إلى الخادم الخلفي. يتم أيضا توفير كلمة المرور لملف PFX في ملف ZIP الذي تم تنزيله.

  2. استخدم أوامر OpenSSL لتخصيص وإنشاء الشهادات وفقا لاحتياجاتك. تابع اتباع الإرشادات الواردة في هذه المقالة إذا كنت ترغب في القيام بذلك بنفسك.

في هذا المقال، ستتعلم كيفية إجراء ما يلي:

  • قم بإنشاء المرجع المصدق المخصص الخاص بك
  • قم بإنشاء شهادة موقعة ذاتياً موقعة من قِبل المرجع المصدق المخصص الخاص بك
  • قم بتحميل شهادة جذر موقعة ذاتياً إلى بوابة التطبيق لمصادقة خادم الواجهة الخلفية

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

إنشاء شهادة CA جذرية

أنشئ شهادة CA الجذر الخاصة بك باستخدام OpenSSL.

إنشاء مفتاح الجذر

  1. قم بتسجيل الدخول إلى جهاز الكمبيوتر الخاص بك حيث تم تثبيت OpenSSL وقم بتشغيل الأمر التالي. يؤدي هذا إلى إنشاء مفتاح مشفر.

    openssl ecparam -out contoso.key -name prime256v1 -genkey
    

إنشاء شهادة الجذر والتوقيع الذاتي عليها

  1. استخدم الأمر التالي لإنشاء طلب توقيع الشهادة (CSR).

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. عند المطالبة، اكتب كلمة المرور للمفتاح الجذر والمعلومات التنظيمية للمرجع المصدق المخصص مثل البلد / المنطقة والولاية والمؤسسة والوحدة التنظيمية واسم المجال المؤهل بالكامل (هذا هو مجال المُصدر).

    create root certificate

  3. استخدم الأمر التالي لإنشاء شهادة الجذر.

    openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
    

    الأوامر السابقة تنشئ شهادة الجذر. سوف تستخدم هذا للتوقيع على شهادة الخادم الخاص بك.

إنشاء شهادة خادم

بعد ذلك، ستنشئ شهادة خادم باستخدام OpenSSL.

إنشاء مفتاح الشهادة

استخدم الأمر التالي لإنشاء مفتاح شهادة الخادم.

openssl ecparam -out fabrikam.key -name prime256v1 -genkey

إنشاء CSR (طلب توقيع الشهادة)

CSR هو مفتاح عام يتم منحه إلى CA عند طلب شهادة. يصدر المرجع المصدق الشهادة لهذا الطلب المحدد.

إشعار

يجب أن يكون CN (الاسم الشائع) لشهادة الخادم مختلفاً عن مجال المُصدر. على سبيل المثال، في هذه الحالة، يكون CN للمُصدر هو www.contoso.com ورقم CN لشهادة الخادم هو www.fabrikam.com.

  1. استخدم الأمر التالي لإنشاء CSR:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. عند المطالبة، اكتب كلمة المرور للمفتاح الجذر والمعلومات التنظيمية لـ CA المخصص: البلد / المنطقة، والولاية، والمؤسسة، والوحدة التنظيمية، واسم المجال المؤهل بالكامل. هذا هو مجال موقع الويب ويجب أن يكون مختلفاً عن المُصدر.

    Server certificate

قم بإنشاء الشهادة باستخدام CSR والمفتاح وقم بتوقيعها باستخدام مفتاح الجذر الخاص بـ CA

  1. استخدم الأمر التالي لإنشاء الشهادة:

    openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
    

تحقق من الشهادة التي تم إنشاؤها حديثاً

  1. استخدم الأمر التالي لطباعة إخراج ملف CRT والتحقق من محتواه:

    openssl x509 -in fabrikam.crt -text -noout
    

    Certificate verification

  2. تحقق من الملفات في دليلك، وتأكد من أن لديك الملفات التالية:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • fabrikam.key

هيئ الشهادة في إعدادات TLS لخادم الويب

في خادم الويب، قم بتكوين TLS باستخدام ملفات fabrikam.crt وfabrikam.key. إذا تعذر على خادم الويب أخذ ملفين، فيمكنك دمجهما في ملف pem. أو pfx. واحد باستخدام أوامر OpenSSL.

IIS

للحصول على إرشادات حول كيفية استيراد الشهادة وتحميلها كشهادة خادم على IIS، راجع كيفية: تثبيت الشهادات المستوردة على خادم ويب في Windows Server 2003.

للحصول على إرشادات ربط TLS، راجع كيفية إعداد SSL على IIS 7.

Apache

التكوين التالي هو مثال على مضيف ظاهري تم تكوينه لـ SSL في Apache:

<VirtualHost www.fabrikam:443>
      DocumentRoot /var/www/fabrikam
      ServerName www.fabrikam.com
      SSLEngine on
      SSLCertificateFile /home/user/fabrikam.crt
      SSLCertificateKeyFile /home/user/fabrikam.key
</VirtualHost>

NGINX

التكوين التالي هو مثال على كتلة خادم NGINX بتكوين TLS:

NGINX with TLS

قم بالوصول إلى الخادم للتحقق من التكوين

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

    Trusted root certificates

    إشعار

    من المفترض أنه تم تكوين DNS لتوجيه اسم خادم الويب (في هذا المثال، www.fabrikam.com) إلى عنوان IP لخادم الويب الخاص بك. إذا لم يكن كذلك، يمكنك تحرير ملف المضيفين لتحليل الاسم.

  2. استعرض للوصول إلى موقع الويب الخاص بك، وانقر فوق رمز القفل في مربع عنوان المستعرض الخاص بك للتحقق من معلومات الموقع والشهادة.

تحقق من التكوين باستخدام OpenSSL

أو يمكنك استخدام OpenSSL للتحقق من الشهادة.

openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts

OpenSSL certificate verification

قم بتحميل شهادة الجذر إلى إعدادات HTTP الخاصة بـ Application Gateway

لتحميل الشهادة في Application Gateway، يجب تصدير شهادة .crt إلى تنسيق .cer Base-64 مشفر. نظراً لأن .crt يحتوي بالفعل على المفتاح العام بتنسيق base-64 المشفر، فما عليك سوى إعادة تسمية امتداد الملف من .crt إلى .cer.

مدخل Azure

لتحميل شهادة الجذر الموثوق بها من المدخل، حدد الإعدادات الخلفية وحدد HTTPS في بروتوكول الواجهة الخلفية.

Screenshot of adding a certificate using the portal.

Azure PowerShell

أو يمكنك استخدام Azure CLI أو Azure PowerShell لتحميل شهادة الجذر. التعليمة البرمجية التالية هي عينة Azure PowerShell.

إشعار

يضيف النموذج التالي شهادة جذر موثوقة لبوابة التطبيق، وينشئ إعداد HTTP جديداً ويضيف قاعدة جديدة، بافتراض وجود تجمع الواجهة الخلفية والمستمع بالفعل.

## Add the trusted root certificate to the Application Gateway

$gw=Get-AzApplicationGateway -Name appgwv2 -ResourceGroupName rgOne

Add-AzApplicationGatewayTrustedRootCertificate `
   -ApplicationGateway $gw `
   -Name CustomCARoot `
   -CertificateFile "C:\Users\surmb\Downloads\contoso.cer"

$trustedroot = Get-AzApplicationGatewayTrustedRootCertificate `
   -Name CustomCARoot `
   -ApplicationGateway $gw

## Get the listener, backend pool and probe

$listener = Get-AzApplicationGatewayHttpListener `
   -Name basichttps `
   -ApplicationGateway $gw

$bepool = Get-AzApplicationGatewayBackendAddressPool `
  -Name testbackendpool `
  -ApplicationGateway $gw

Add-AzApplicationGatewayProbeConfig `
  -ApplicationGateway $gw `
  -Name testprobe `
  -Protocol Https `
  -HostName "www.fabrikam.com" `
  -Path "/" `
  -Interval 15 `
  -Timeout 20 `
  -UnhealthyThreshold 3

$probe = Get-AzApplicationGatewayProbeConfig `
  -Name testprobe `
  -ApplicationGateway $gw

## Add the configuration to the HTTP Setting and don't forget to set the "hostname" field
## to the domain name of the server certificate as this will be set as the SNI header and
## will be used to verify the backend server's certificate. Note that TLS handshake will
## fail otherwise and might lead to backend servers being deemed as Unhealthy by the probes

Add-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $gw `
  -Name testbackend `
  -Port 443 `
  -Protocol Https `
  -Probe $probe `
  -TrustedRootCertificate $trustedroot `
  -CookieBasedAffinity Disabled `
  -RequestTimeout 20 `
  -HostName www.fabrikam.com

## Get the configuration and update the Application Gateway

$backendhttp = Get-AzApplicationGatewayBackendHttpSettings `
  -Name testbackend `
  -ApplicationGateway $gw

Add-AzApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $gw `
  -Name testrule `
  -RuleType Basic `
  -BackendHttpSettings $backendhttp `
  -HttpListener $listener `
  -BackendAddressPool $bepool

Set-AzApplicationGateway -ApplicationGateway $gw

تحقق من صحة الواجهة الخلفية لبوابة التطبيق

  1. انقر فوق عرض Backend Health لبوابة التطبيق للتحقق مما إذا كان المسبار سليماً أم لا.
  2. يجب أن ترى أن الحالة Healthy لفحص HTTPS.

HTTPS probe

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

لمعرفة المزيد حول SSL \ TLS في Application Gateway، راجع نظرة عامة على إنهاء TLS وTLS نهاية إلى نهاية مع بوابة التطبيق.