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

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

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

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

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

تُظهر الصورة التالية المكانين اللذين تستخدم فيهما البوابة بروتوكول أمان طبقة النقل (TLS):

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

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

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

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

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

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

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

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

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

إذا كانت البوابة تتصل بإصدار Edge المستنِد إلى السحابة الإلكترونية، ستضبط Apigee عنوان URL لواجهة برمجة تطبيقات إدارة Edge مسبقًا لاستخدام بروتوكول أمان طبقة النقل (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) بين المطوّرين والبوابة

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

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

بانثيون

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

أكيا

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

Edge لمداخل Cloud الخاصة

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

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

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

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

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

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

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

يمكنك ضبط السمات التالية في ملف 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_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 (خاص سحابة إلكترونية). ولأنّ جهاز موازنة الحمل لا يحوِّل محتوى صفحات 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 باستخدام اسم المضيف نفسه (على سبيل المثال، *.devمدخل.apigee.io).

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

// 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;
  }
}