استخدام بروتوكول أمان طبقة النقل (TLS) على البوابة

يتم الآن عرض مستندات Apigee Edge.
يمكنك الاطّلاع على وثائق Apigee X.

يمكنك ضبط البوابة لاستخدام بروتوكول أمان طبقة النقل (TLS). يعتمد إجراء إعداد بروتوكول أمان طبقة النقل (TLS) على المنصة على كيفية نشر المنصة:

  • Cloud: يمكنك ضبط بروتوكول أمان طبقة النقل من Pantheon أو Acquia، وهي خدمة الاستضافة المستندة إلى السحابة الإلكترونية للبوابة.
  • Apigee Edge for Private Cloud: يتيح ضبط إعدادات بروتوكول أمان طبقة النقل (TLS) داخل الشركة على الخادم الذي يستضيف البوابة.

بروتوكول أمان طبقة النقل والبوابة

تعرض الصورة التالية المكانين حيث تستخدم البوابة بروتوكول أمان طبقة النقل:

  1. للاتصال بين البوابة وواجهة برمجة تطبيقات إدارة Edge.

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

    عند إنشاء بوابة خاصة بك، تتمثل إحدى الخطوات الأولى التي يجب تنفيذها في تحديد عنوان URL لواجهة برمجة تطبيقات إدارة Edge. ويمكن لعنوان URL هذا استخدام بروتوكول أمان طبقة النقل (TLS) وفقًا لكيفية ضبط واجهة برمجة تطبيقات إدارة Edge. ويمكنك الاطّلاع على إنشاء بوابة مطوِّري برامج لمزيد من المعلومات.
  2. للتواصل بين مطوّري البرامج والبوابة

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

    تعتمد طريقة إعداد بروتوكول أمان طبقة النقل (TLS) لهذا السيناريو على كيفية نشر البوابة: السحابة الإلكترونية أو Apigee Edge لخدمة خاصة في Cloud. تتناول الأقسام التالية كلا السيناريوهَين.

ضبط بروتوكول أمان طبقة النقل بين البوابة وواجهة برمجة تطبيقات إدارة Edge

تحدّد إعدادات واجهة برمجة تطبيقات إدارة Edge ما إذا كان يمكن للاتصال استخدام بروتوكول أمان طبقة النقل أم لا. في حال ضبط واجهة برمجة تطبيقات إدارة Edge لاستخدام بروتوكول أمان طبقة النقل (TLS)، يمكن للبوابة استخدام HTTPS. وبخلاف ذلك، تتواصل البوابة مع Edge من خلال HTTP. لذلك، بصفتك مطوِّر بوابة، ما عليك سوى معرفة كيفية ضبط Edge لضبط الاتصال بين البوابة وEdge.

بالنسبة إلى الإجراء الذي تستخدمه لضبط الاتصال بواجهة برمجة تطبيقات إدارة Edge، يمكنك الاطّلاع على إنشاء بوابة مطوّري برامج.

إصدار مستنِد إلى السحابة الإلكترونية من Edge

إذا كانت بوابتك تتصل بإصدار Edge المستند إلى السحابة الإلكترونية، يتم عندئذٍ ضبط عنوان URL لواجهة برمجة تطبيقات إدارة Edge بشكل مسبق من خلال Apigee لاستخدام بروتوكول أمان طبقة النقل (TLS). عند إعداد البوابة، يمكنك الوصول إلى واجهة برمجة تطبيقات إدارة Edge باستخدام عنوان URL التالي: https://api.enterprise.apigee.com/v1.

تثبيت Edge الخاص على Cloud

بالنسبة إلى تثبيت Edge الخاص على Edge، سيكون عنوان URL لواجهة برمجة تطبيقات إدارة Edge على النحو التالي:
http://EdgePrivateCloudIp:8080/v1
أو:
https://EdgePrivateCloudIp:TLSport/v1

حيث يكون EdgePrivateCloudIp هو عنوان IP لخادم Edge Management Server وTLSport هو منفذ TLS لواجهة برمجة التطبيقات Edge Edge API. على سبيل المثال، قد يكون رقم المنفذ 8443 أو حتى 8080 استنادًا إلى إعدادات Edge.

ضبط بروتوكول أمان طبقة النقل بين مطوّري البرامج والبوابة

وتعتمد طريقة ضبط بروتوكول أمان طبقة النقل بين مطوّري البرامج والبوابة على كيفية نشر المنصة: Cloud أو Apigee Edge لخدمة خاصة في السحابة الإلكترونية.

بوابات مستندة إلى السحابة الإلكترونية

بانثيون

توفّر شركة Pantheon بروتوكول HTTPS تلقائيًا مجانيًا لجميع المواقع الإلكترونية على المنصة من خلال Pantheon Global CDN وتستخدم سياسة Let's Encrypt. راجِع أيضًا HTTPS على شبكة توصيل المحتوى (CDN) العالمية على Pantheon.

الاكوا

لتفعيل طبقة النقل الآمنة/طبقة المقابس الآمنة باستخدام Acquia، يُرجى الاطّلاع على تفعيل طبقة المقابس الآمنة.

Edge للبوابات السحابية الخاصة

تتطلب جميع عمليات تثبيت البوابة الخاصة في Apigee للبوابة أن تكون البوابة خلف جهاز موازنة الحمل، كما هو موضَّح أدناه:

لذلك، بالنسبة إلى عمليات التثبيت داخل المؤسسة، لديك خياران لإعداد بروتوكول أمان طبقة النقل:

  • ضبط بروتوكول أمان طبقة النقل على جهاز موازنة الحمل: يمكنك ضبط بروتوكول أمان طبقة النقل على جهاز موازنة الحمل نفسه، وليس على البوابة. لذلك، يعتمد الإجراء الذي تستخدمه لضبط طبقة النقل الآمنة على جهاز موازنة الحمل. للاطّلاع على مزيد من المعلومات، يمكنك الاطّلاع على المستندات الخاصة بجهاز موازنة الحمل.
  • ضبط بروتوكول أمان طبقة النقل (TLS) على البوابة نفسها: إذا لزم الأمر، يمكنك ضبط بروتوكول أمان طبقة النقل على خادم الويب الذي يستضيف البوابة. للاطّلاع على مزيد من المعلومات، يمكنك الاطّلاع على ضبط البوابة لاستخدام HTTPS.

يجب الحصول على شهادة بروتوكول أمان طبقة النقل (TLS) قبل أن تتمكّن من نشر البوابة في بيئة إنتاج.

ضبط إعدادات إضافية لبروتوكول أمان طبقة النقل (TLS)

يمكنك تعديل ملف sites/default/settings.local.php (cloud) أو sites/default/settings.php (Private Cloud) لإجراء تغييرات على إعدادات بروتوكول أمان طبقة النقل (TLS) للبوابة.

عند تعديل الملف، أضِف مثيلات الدالة ini_set() لضبط سمة. للحصول على مزيد من المعلومات عن هذه الدالة، اطّلِع على: http://php.net/manual/en/function.ini-set.php.

يمكنك ضبط السمات التالية في الملف sites/default/settings.local.php (cloud) أو sites/default/settings.php (Private Cloud):

  • cookie_httponly: (مقترَحة) تحدّد هذه السياسة أنّه يمكن الوصول إلى ملف تعريف الارتباط هذا عبر بروتوكول HTTP فقط. اضبط هذه السمة على أنّها:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure - (اختياري) تحدِّد هذه السياسة أنّه لا يمكن إرسال ملفات تعريف الارتباط إلا من خلال اتصالات آمنة. وهذا يعني أنّه يجب عرض المحتوى بأكمله على HTTPS. في حال تفعيل هذا الإعداد، لن يعمل الموقع الإلكتروني عبر بروتوكول HTTP. اضبط هذه السمة على:

    ini_set('session.cookie_secure', true);
  • gc_maxlifetime وcookie_lifetime: (اختيارية) gc_lifeteime تحدّد عدد الثواني التي يمكن بعدها حذف البيانات، وتحدّد cookie_lifetime فترة صلاحية ملف تعريف الارتباط بالثواني. اضبط هذه السمات على النحو التالي:

    ini_set('session.gc_maxlifetime', 3600);
    ini_set('session.cookie_lifetime', 3600);

لمزيد من المعلومات عن إعداد بروتوكول أمان طبقة النقل بين بوابة مطوّري البرامج والعملاء، يُرجى الاطِّلاع على تفعيل طبقة المقابس الآمنة للاتصال عبر HTTPS الآمن على موقع مستند Pantheon.

ضبط بروتوكول أمان طبقة النقل باستخدام أجهزة موازنة الحمل

للحصول على أداء أفضل، يتم ضبط أجهزة موازنة الحمل أحيانًا على إنهاء بروتوكول أمان طبقة النقل (TLS). عند إنهاء بروتوكول أمان طبقة النقل، تعمل أجهزة موازنة الحمل على فك تشفير الرسائل المُرسَلة عبر https:// وإعادة توجيه الرسائل إلى خوادم الخلفية عبر http://. ويساعد هذا في توفير الخوادم الخلفية التي تُحمّل تكاليف فك تشفير رسائل https:// بنفسه.

إذا كانت أجهزة موازنة الحمل تعيد توجيه رسائل HTTP غير مشفّرة إلى الخوادم في مركز البيانات نفسه، لا تكون الأمان مشكلة. مع ذلك، إذا كان جهاز موازنة الحمل يعيد توجيه الرسائل عبر http:// إلى خوادم خارج مركز البيانات، مثل بوابة مطوّري برامج Apigee، سيتم تشفير الرسائل بدون فتح أي ثغرة أمنية.

إذا كانت بوابة مطوّري البرامج موجودة خلف أجهزة موازنة الحمل التي تستخدم إنهاء بروتوكول أمان طبقة النقل (TLS)، وكنت تريد عرض جميع الزيارات عبر روابط https://، يجب أن تحتوي صفحات المواقع الإلكترونية على روابط https:// فقط وستحتاج إلى إضافة الرمز التالي إلى بوابة بوابة مطوّري البرامج sites/default/settings.local.php (cloud) أو sites/default/settings.php (Private Cloud). بما أنّ جهاز موازنة الحمل لا يُحوِّل محتوى صفحات HTML تلقائيًا، يضمن الرمز أن تبدأ جميع الروابط التي يتم تمريرها إلى العميل بـ https://.

لضبط طبقة النقل الآمنة مع أجهزة موازنة الحمل، أضِف الأسطر التالية إلى ملف sites/default/settings.local.php (cloud) أو sites/default/settings.php (Private Cloud):

// Only check for SSL if we are not using PHP from the command line.
if (PHP_SAPI != 'cli') {
  // Assume we can't detect SSL unless proven otherwise.
  $can_detect_ssl = FALSE;

  // Set HTTPS URL of portal 
  $base_url = 'https://developers.myCo.com';

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
    $can_detect_ssl = TRUE;
  }

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }

  if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') {
    header('HTTP/1.0 301 Moved Permanently');
    // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here.
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit;
  }
}

يمكنك الاطّلاع على ما يلي للحصول على مزيد من المعلومات:

إعادة توجيه زيارة البوابة إلى HTTPS

يمكنك إعادة توجيه جميع زيارات البوابة إلى HTTPS من خلال تحديث ملف sites/default/settings.local.php (cloud) أو ملف sites/default/settings.php (خاص مع السحابة الإلكترونية). تختلف التعديلات المطلوبة استنادًا إلى ما إذا كنت تُعيد التوجيه إلى HTTPS على اسم المضيف نفسه أو عدة أسماء مضيفين.

تتم إعادة التوجيه إلى HTTPS على اسم المضيف نفسه

أضِف الرمز التالي إلى ملف sites/default/settings.local.php (cloud) أو sites/default/settings.php (Private Cloud) لإعادة توجيه جميع زيارات البوابة إلى HTTPS على اسم المضيف نفسه (على سبيل المثال، *.devport.apigee.io).

في هذا السيناريو، إذا كان مطوّر البرامج يزور بوابتك على العنوان live-example.dev Portal.apigee.io، ولكن يجب الوصول إلى الشهادة التي تم تحميلها إلى devport.example.com، سيتعذّر تنفيذ الطلب.

// Only check for SSL if we are not using PHP from the command line.
if (PHP_SAPI != 'cli') {
  // Assume we can't detect SSL unless proven otherwise.
  $can_detect_ssl = FALSE;

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
    $can_detect_ssl = TRUE;
  }

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }

  if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') {
    header('HTTP/1.0 301 Moved Permanently');
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit;
  }
}

تتم إعادة التوجيه إلى HTTPS على أسماء مضيفين متعددة

أضِف الرمز التالي إلى ملف sites/default/settings.local.php (سحابة) أو sites/default/settings.php (خاص في السحابة الإلكترونية) لإعادة التوجيه إلى جميع زيارات البوابة إلى HTTPS على أسماء مضيفين متعددة.

  // Only check for SSL if we are not using PHP from the command line.
if (PHP_SAPI != 'cli') {
  // Assume we can't detect SSL unless proven otherwise.
  $can_detect_ssl = FALSE;
  // Assume we are not forcing a redirect until proven otherwise.
  $force_redirect = FALSE;

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
    $can_detect_ssl = TRUE;
  }

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }
  
  if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') {
    // We will force a redirect because HTTPS is required.
    $force_redirect = TRUE;
  }
  
  // This works on Pantheon only; the constant is undefined elsewhere.
  switch (PANTHEON_ENVIRONMENT) {
    case 'dev':
      $canonical_hostname = 'dev.devportal.example.com';
      break;
    case 'test':
      $canonical_hostname = 'test.devportal.example.com';
      break;
    case 'live':
      $canonical_hostname = 'devportal.example.com';
      break;
    default:
      $canonical_hostname = strtolower($_SERVER['HTTP_HOST']);
      break;
  }
  if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) {
    // We will force a redirect because hostname is not canonical.
    $force_redirect = TRUE;
  }

  if ($force_redirect) {
    header('HTTP/1.0 301 Moved Permanently');
    header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']);
    exit;
  }
}