استخدام بروتوكول أمان طبقة النقل (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) لهذا السيناريو على كيفية نشر البوابة: cloud أو 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 الخاص على السحابة الإلكترونية

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

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

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

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

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

بانثيون

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

أكيا

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

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

إنّ جميع عمليات تثبيت 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) بين بوابة المطوّرين والعملاء، يُرجى الاطّلاع على تفعيل طبقة المقابس الآمنة للاتصال الآمن عبر 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;
  }
}