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

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

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

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

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

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

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

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

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

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

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

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

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

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

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

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

تثبيت شبكة Edge الخاصة على السحابة الإلكترونية

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

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

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

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

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

بانثيون

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

Acquia

لتفعيل بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL) باستخدام Acquia، اطّلِع على تفعيل طبقة المقابس الآمنة (SSL).

بوابة Edge for Private Cloud

تتطلب جميع عمليات تثبيت Private Cloud التي تنصح بها Apigee أن تكون البوابة وراء جهاز موازنة الحمل، كما هو موضّح أدناه:

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

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

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

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

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

عند تعديل الملف، أضِف مثيلات للدالة ini_set() لضبط سمة. للحصول على مزيد من المعلومات عن هذه الدالة، راجِع: ini_set.

يمكنك ضبط السمات التالية في ملف sites/default/settings.local.php (السحاب) أو sites/default/settings.php (السحابة الإلكترونية الخاصة):

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

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

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

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

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

إعداد بروتوكول أمان طبقة النقل (TLS) باستخدام أجهزة موازنة الحمل

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

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

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

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

// 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 (السحاب) أو sites/default/settings.php (السحابة الإلكترونية الخاصة). تختلف التحديثات المطلوبة بناءً على ما إذا كنت تعيد التوجيه إلى HTTPS على اسم المضيف نفسه أو أسماء مضيفين متعددة.

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

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

في هذا السيناريو، إذا كان أحد المطوِّرين يزور البوابة على live-example.devportal.apigee.io، ولكنه يحتاج إلى الوصول إلى شهادة تم تحميلها من أجل devportal.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;
  }
}