أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
يمكنك ضبط البوابة لاستخدام بروتوكول أمان طبقة النقل (TLS). تعتمد إجراءات ضبط بروتوكول أمان طبقة النقل (TLS) للمنصة على طريقة نشر المنصة:
- السحابة الإلكترونية: اضبط بروتوكول أمان طبقة النقل (TLS) من Pantheon أو Acquia، وهما خدمتا استضافة مستندة إلى السحابة الإلكترونية للبوابة.
- Apigee Edge للسحابة الخاصة: يمكنك ضبط بروتوكول أمان طبقة النقل (TLS) في الموقع الجغرافي على الخادم الذي يستضيف البوابة.
بروتوكول أمان طبقة النقل (TLS) والبوابة
تعرض الصورة التالية المكانَين اللذين يستخدم فيهما البوابة بروتوكول أمان طبقة النقل (TLS):

- للتواصل بين البوابة وواجهة برمجة التطبيقات لإدارة Edge
لا تعمل البوابة كنظام مستقل. بدلاً من ذلك، يتم تخزين معظم المعلومات التي يستخدمها البوابة على Edge، حيث يمكن نشر Edge إما في السحابة الإلكترونية أو في الموقع الجغرافي كعملية تثبيت سحابة إلكترونية خاصة. عند الضرورة، يرسل البوابة طلب HTTP أو HTTPS إلى واجهة برمجة التطبيقات لإدارة Edge من أجل استرداد المعلومات أو إرسالها.
عند إنشاء البوابة، يجب تحديد عنوان URL لواجهة برمجة التطبيقات الخاصة بإدارة Edge كإحدى الخطوات الأولى. استنادًا إلى طريقة ضبط Edge Management API، يمكن أن يستخدم عنوان URL هذا بروتوكول أمان طبقة النقل (TLS). يمكنك الاطّلاع على إنشاء بوابة مخصّصة للمطوّرين لمزيد من المعلومات. - للتواصل بين المطوّرين والبوابة
عند استخدام بوابة "خدمات المطوّرين" لنشر واجهات برمجة التطبيقات، يسجّل المطوّرون الدخول إلى البوابة لتسجيل التطبيقات وتلقّي مفاتيح واجهة برمجة التطبيقات. بيانات اعتماد تسجيل الدخول ومفتاح واجهة برمجة التطبيقات هي معلومات خاصة تريد إرسالها عبر HTTPS لضمان أمانها. يجب إرسال هذا النوع من المعلومات الخاصة عبر بروتوكول HTTPS.
تعتمد طريقة ضبط بروتوكول أمان طبقة النقل (TLS) في هذا السيناريو على طريقة نشر البوابة الإلكترونية، سواء كانت سحابة إلكترونية أو Apigee Edge للسحابة الإلكترونية الخاصة. توضّح الأقسام التالية كلا السيناريوهَين.
ضبط بروتوكول أمان طبقة النقل (TLS) بين البوابة وواجهة برمجة التطبيقات لإدارة Edge
يحدّد إعداد Edge Management API ما إذا كان بإمكان الاتصال استخدام طبقة النقل الآمنة (TLS) أم لا. إذا تم ضبط واجهة برمجة التطبيقات لإدارة Edge لاستخدام بروتوكول أمان طبقة النقل (TLS)، يمكن أن تستخدم البوابة بروتوكول HTTPS. بخلاف ذلك، يتواصل البوابة مع Edge عبر HTTP. لذلك، بصفتك مطوّر بوابة، ما عليك سوى معرفة كيفية إعداد Edge لضبط الاتصال بين البوابة وEdge.
للاطّلاع على الإجراء الذي تستخدمه لإعداد الاتصال بواجهة برمجة التطبيقات Edge Management API، راجِع مقالة إنشاء بوابة مطوّرين.
إصدار Edge المستند إلى السحابة الإلكترونية
إذا كان البوابة الإلكترونية تتصل بالإصدار المستند إلى السحابة الإلكترونية من Edge، فإنّ عنوان URL الخاص بواجهة برمجة التطبيقات لإدارة Edge يكون معدًا مسبقًا من قِبل Apigee لاستخدام طبقة النقل الآمنة (TLS). عند ضبط البوابة، يمكنك الوصول إلى Edge Management API باستخدام عنوان URL https://api.enterprise.apigee.com/v1.
تثبيت Edge في السحابة الإلكترونية الخاصة
بالنسبة إلى عملية تثبيت Edge في "السحابة الخاصة"، يكون عنوان URL لواجهة برمجة التطبيقات لإدارة Edge بالتنسيق التالي:
http://EdgePrivateCloudIp:8080/v1
أو:
https://EdgePrivateCloudIp:TLSport/v1
حيث EdgePrivateCloudIp هو عنوان IP لخادم Edge Management Server وTLSport هو منفذ TLS لواجهة Edge Management API. على سبيل المثال، يمكن أن يكون رقم المنفذ 8443 أو حتى 8080 استنادًا إلى إعداد Edge.
ضبط بروتوكول أمان طبقة النقل (TLS) بين المطوّرين والبوابة
تعتمد طريقة ضبط طبقة النقل الآمنة بين المطوّرين والبوابة على طريقة نشر البوابة، سواء كان ذلك على السحابة الإلكترونية أو Apigee Edge للسحابة الخاصة.
البوابات المستنِدة إلى السحابة الإلكترونية
Pantheon
توفّر منصة Pantheon بروتوكول HTTPS مجانيًا ومبرمَجًا لجميع المواقع الإلكترونية على منصتها من خلال شبكة توصيل المحتوى العالمية (CDN) من Pantheon وباستخدام Let's Encrypt. يمكنك أيضًا الاطّلاع على HTTPS على شبكة توصيل المحتوى العالمية (CDN) من Pantheon.
Acquia
لتفعيل بروتوكول أمان طبقة النقل (TLS)/طبقة المقابس الآمنة (SSL) باستخدام Acquia، يُرجى الاطّلاع على تفعيل طبقة المقابس الآمنة.بوابات Edge for Private Cloud
تتطلّب جميع عمليات تثبيت Private Cloud المقترَحة للبوابة أن تكون البوابة خلف موازن تحميل، كما هو موضّح أدناه:

لذلك، عند تثبيت التطبيق على الأجهزة، يتوفّر لك خياران لإعداد طبقة النقل الآمنة:
- ضبط بروتوكول أمان طبقة النقل (TLS) على جهاز موازنة الحمل: اضبط بروتوكول أمان طبقة النقل (TLS) على جهاز موازنة الحمل نفسه، وليس على البوابة. وبالتالي، فإنّ الإجراء الذي تستخدمه لضبط إعدادات بروتوكول أمان طبقة النقل يعتمد على جهاز موازنة الحمل. يمكنك الاطّلاع على المستندات الخاصة بموازن التحميل للحصول على مزيد من المعلومات.
- ضبط بروتوكول أمان طبقة النقل (TLS) على البوابة نفسها: يمكنك ضبط بروتوكول أمان طبقة النقل (TLS) على خادم الويب الذي يستضيف البوابة، إذا لزم الأمر. لمزيد من المعلومات، راجِع مقالة ضبط البوابة لاستخدام HTTPS.
يجب الحصول على شهادة طبقة النقل الآمنة (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) بين بوابة مخصّصة للمطوّرين والعملاء، يُرجى الاطّلاع على تفعيل طبقة المقابس الآمنة (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://drupal.org/node/425990
- https://drupal.org/node/313145
- http://drupal.stackexchange.com/questions/102091/drupal-behind-a-ssl-offloading-reverse-proxy-is-this-config-correct
إعادة توجيه زيارات البوابة إلى 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; } }