استخدام بروتوكول أمان طبقة النقل (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 management API

تحدد إعدادات واجهة برمجة تطبيقات إدارة Edge ما إذا كان يمكن الاتصال بروتوكول أمان طبقة النقل (TLS). إذا تم ضبط واجهة برمجة تطبيقات إدارة Edge على استخدام بروتوكول أمان طبقة النقل (TLS)، يمكن للبوابة استخدام HTTPS. بخلاف ذلك، ستتواصل البوابة مع Edge عبر HTTP. لذلك، بصفتك مطوِّر بوابة، يمكنك معرفة كيفية تهيئة 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. خادم الخادم وTLSport هو منفذ بروتوكول أمان طبقة النقل (TLS) لواجهة برمجة تطبيقات إدارة Edge. على سبيل المثال، قد يكون رقم المنفذ 8443 أو حتى 8080 بناءً على إعدادات Edge.

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

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

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

بانثيون

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

Acquia

لتمكين TLS/SSL باستخدام Acquia، راجع تمكين طبقة المقابس الآمنة (SSL).

Edge for Private بوابات السحابة الإلكترونية

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

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

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

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

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

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

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

يمكنك ضبط السمات التالية في الملف sites/default/settings.local.php (السحاب) أو sites/default/settings.php (خاصّة 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);

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

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

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

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

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

لضبط بروتوكول أمان طبقة النقل (TLS) باستخدام أجهزة موازنة الحمل، أضِف الأسطر التالية إلى الصفحة sites/default/settings.local.php (السحاب). أو sites/default/settings.php (خاصّة 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 (السحاب). أو sites/default/settings.php (خاصّة Cloud). تختلف التحديثات المطلوبة حسب ما إذا كنت تعيد التوجيه إلى 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;
  }
}