ضبط بروتوكول أمان طبقة النقل (TLS) لخدمة BaaS API

Edge for Private Cloud، الإصدار 4.17.09

إنّ بروتوكول أمان طبقة النقل (TLS) الذي يسبقه طبقة المقابس الآمنة (SSL) هي تكنولوجيا الأمان القياسية. لضمان مراسلة آمنة ومشفّرة عبر بيئة واجهة برمجة التطبيقات. يمكنك ضبط بروتوكول أمان طبقة النقل (TLS) على بوابة واجهة برمجة التطبيقات BaaS وعقدة حزم واجهة برمجة التطبيقات BaaS.

تعرِض الصورة التالية مخطّط نشر نموذجيًا لخدمة BaaS لواجهة برمجة التطبيقات باستخدام بوابة BaaS واحدة. وثلاثة عُقد في حزمة واجهة برمجة التطبيقات BaaS.

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

تتضمّن عملية النشر هذه جهاز موازنة الحمل بين عُقد "بوابة" و"حزمة التحديث". في هذه الدورة، ستجري البوابة طلبات HTTP إلى جهاز موازنة التحميل، ثم يقوم جهاز موازنة الحمل يعيد توجيه الطلبات إلى أحد عُقد الحزمة. هذا هو عملية النشر الموصى بها لنظام إنتاج.

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

عند ضبط بروتوكول أمان طبقة النقل (TLS) لخدمة BaaS الخاصة بواجهة برمجة التطبيقات، تتوفّر لك عدة خيارات:

  • ضبط بروتوكول أمان طبقة النقل (TLS) على البوابة وفي جهاز موازنة الحمل لعُقد التجميع

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

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

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

    أحد الخيارات غير المعروضة أعلاه هو استخدام جهاز موازنة الحمل أمام عقدة "بوابة البوابة". في ذلك، يمكنك ضبط بروتوكول أمان طبقة النقل (TLS) في جهاز موازنة الحمل، واختياريًا في الاتصال بين جهاز موازنة الحمل والبوابة.

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

تؤدي الإجراءات أدناه إلى ضبط بروتوكول أمان طبقة النقل (TLS) على منفذ البوابة التلقائي رقم 9000 وعقدة حزمة التكديس 8080. ومع ذلك، يمكنك تغيير هذا المنفذ إذا أردت.

بغض النظر عن المنفذ الذي تستخدمه، عليك التأكّد من أنّ المنفذ مفتوح على العقدة. بالنسبة على سبيل المثال، يمكنك استخدام الأمر التالي لفتح المنفذ 8443:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

تهيئة بروتوكول أمان طبقة النقل (TLS) على حزمة BaaS لواجهة برمجة التطبيقات

يتم تلقائيًا إيقاف بروتوكول أمان طبقة النقل (TLS) لمجموعة BaaS لواجهة برمجة التطبيقات. يمكنك بعد ذلك الوصول إلى واجهة برمجة تطبيقات BaaS عبر HTTP من خلال باستخدام عنوان IP أو اسم DNS لعقدة التكديس والمنفذ 8080. على سبيل المثال:

http://stack_IP:8080

بدلاً من ذلك، يمكنك ضبط إمكانية الوصول عبر بروتوكول أمان طبقة النقل (TLS) إلى واجهة برمجة تطبيقات BaaS كي تتمكّن من الوصول إليها في النموذج:

https://stack_IP:8080

في هذا المثال، يمكنك ضبط الوصول إلى بروتوكول أمان طبقة النقل (TLS) لاستخدام المنفذ 8080. ومع ذلك، لا حاجة إلى المنفذ 8080. - يمكنك تهيئة الحزمة لاستخدام منفذ مختلف. الشرط الوحيد هو أن يكون جدار الحماية يسمح بحركة المرور عبر المنفذ المحدد.

لا تدعم الحزمة إلا نوعًا واحدًا من الطلبات (HTTP أو HTTPS) عبر منفذ واحد. ولذلك، إذا هيأت الوصول عبر HTTPS على المنفذ 8080، فلن تتمكن من استخدام HTTP للوصول إلى المنفذ 8080. إذا كنت ضبط مجموعة الفلاتر على استخدام المنفذ 8443 مع HTTPS، وبالتالي لن تسمح الحزمة بالاستماع على المنفذ 8080.

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

  1. أنشِئ ملف JKS لملف تخزين المفاتيح الذي يحتوي على شهادة بروتوكول أمان طبقة النقل (TLS) ومفتاح خاص. لمزيد من المعلومات، راجع تهيئة TLS/SSL for Edge On المبنى:
    ملاحظة: تأكَّد من تطابق كلمة المرور المستخدَمة في ملف تخزين المفاتيح مع كلمة المرور نفسها.
  2. انسخ ملف JKS الخاص بملف تخزين المفاتيح إلى دليل على عقدة التجميع، مثل /opt/apigee/customer/application. يجب أن يكون الوصول إلى الدليل متاحًا من خلال "apigee" المستخدم.
  3. تغيير ملكية ملف JKS إلى "apigee" المستخدم:
    > تشون apigee:apigee /opt/apigee/customer/application/keystore.jks

    حيث يكون keystore.jks هو الاسم من ملف تخزين المفاتيح.
  4. عدِّل /opt/apigee/customer/application/usergrid.properties لتعيين الخصائص التالية، بما في ذلك المسار إلى ملف JKS وكلمة المرور على ملف تخزين المفاتيح والمفتاح. إذا لم يكن هذا الملف متوفّرًا، أنشئه:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # بشكل افتراضي، يستخدم الوصول عبر TLS المنفذ 8080.
    # استخدِم هذه السمة لتحديد منفذ مختلف.
    # tomcat-server_port=8080


    تحذير: يجب أن تكون قيمة كلمة المرور بنص واضح. لذلك يجب حماية usergrid.properties من المواقع الإلكترونية غير الوصول إليه.

    استخدِم الحقل tomcat-server_keyalias لتحديد الاسم المستعار لملف تخزين المفاتيح. ويتم تحديد الاسم المستعار للمفتاح في الوقت الذي أنشأت فيه المفتاح. على سبيل المثال، يمكنك ضبطه باستخدام الخيار -alias في الأمر keytool.

    استخدام tomcat-server_ssl.protocols لإعداد بروتوكولات طبقة النقل الآمنة التي تدعمها الحزمة. للحصول على قائمة بالبروتوكولات المتوافقة مع Java 8، يمكنك الاطّلاع على http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. إعداد عقدة التكديس:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid مسبقًا
  6. أعِد تشغيل حزمة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid إعادة التشغيل
  7. تأكَّد من عمل بروتوكول أمان طبقة النقل (TLS) من خلال تشغيل أمر cURL التالي على عقدة حزمة التكديس باستخدام HTTPS:
    > تمرين تجعيد -k https://localhost:8080/status -v

    إذا تم ضبط بروتوكول أمان طبقة النقل (TLS) بشكل صحيح، من المفترض أن يظهر لك ردّ يحتوي على معلومات الحالة.

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

    إذا كانت "البوابة" تُجري طلبات مباشرة إلى الحزمة، عليك ضبط البوابة على الوصول إلى التجميع عبر HTTPS كما هو موضح في القسم التالي.
  10. استخدِم الإجراء أدناه في قسم "ضبط عُقد حزمة BaaS في واجهة برمجة التطبيقات لطبقة النقل الآمنة في الحزمة أو البوابة" للتأكد من أن عقدة الحزمة تحتوي على عناوين URL الصحيحة لطبقة النقل الآمنة عند إنشاء بيانات الردود.

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

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

عادةً ما يتم ضبط تثبيت واجهة برمجة التطبيقات BaaS على إحدى الحالتَين التاليتَين:

  • استخدام جهاز موازنة الحمل بين عُقد "البوابة" و"حزمة التكديس"

    يمكنك ضبط جهاز موازنة الحمل لإرسال طلبات إلى عُقد التجميع عبر HTTPS. يمكنك الاطّلاع على المستندات الخاصة بجهاز موازنة الحمل للحصول على مزيد من المعلومات.

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

    اضبِط البوابة للوصول إلى مجموعة الفلاتر عبر HTTPS كما هو موضَّح أدناه.

اتّبِع الإجراء التالي لضبط بوابة BaaS في واجهة برمجة التطبيقات لإجراء طلبات البيانات من واجهة برمجة التطبيقات عبر HTTPS:

  1. تهيئة الوصول إلى بروتوكول أمان طبقة النقل (TLS) في حزمة BaaS كما هو موضح أعلاه، أو في جهاز موازنة الحمل عُقد التكديس على النحو الموضَّح في المستندات الخاصة بجهاز موازنة الحمل.
  2. عدِّل /opt/apigee/customer/application/portal.properties لتعيين الخاصية التالية. إذا لم يكن هذا الملف متوفّرًا، أنشئه:
    baas.portal.config.overrideUrl=https://stackIP:port

    حدِّد كقيمة لهذه السمة، عنوان IP أو اسم نظام أسماء النطاقات ومنفذ عقدة حزمة واجهة برمجة التطبيقات. لتثبيت عقدة واحدة، أو لجهاز موازنة الحمل إذا كان هناك جهاز موازنة الحمل أمام عُقد واجهة برمجة التطبيقات BaaS Stack.
  3. ضبط عقدة البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal Configuration
  4. يُرجى إعادة تشغيل "بوابة" باستخدام الأمر:
    . > /opt/apigee/apigee-service/bin/apigee-service baas-portal بكسل
  5. في حال استخدام شهادة موقعة ذاتيًا عند ضبط وصول بروتوكول أمان طبقة النقل (TLS) إلى مجموعة الفلاتر أعلاه، قد لا يسمح المتصفّح بتلقّي طلبات الحزمة من "البوابة". إذا رأيت حدث خطأ في المتصفح يفيد بعدم السماح بوصول HTTPS إلى الحزمة، اطلب ما يلي عنوان URL في المتصفّح، وإضافة استثناء أمان للسماح بالوصول:
    https://stackIP:port/status

    حدِّد عنوان IP أو اسم نظام أسماء النطاقات ومنفذ عقدة حزمة واجهة برمجة التطبيقات أو جهاز موازنة الحمل.

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

يدخل المستخدمون إلى البوابة افتراضيًا من خلال تقديم طلبات HTTP غير مشفرة عبر المنفذ 9000 على خادم المدخل. يمكنك ضبط البوابة لاستخدام بروتوكول HTTPS لتشفير البيانات التي يتم إرسالها من وإلى البوابة.

يمكنك الوصول إلى البوابة عبر HTTP افتراضيًا من خلال استخدام عنوان IP أو اسم نظام أسماء النطاقات للمدخل العقدة والمنفذ 9000. على سبيل المثال:

http://portal_IP:9000

بدلاً من ذلك، يمكنك ضبط وصول بروتوكول أمان طبقة النقل (TLS) إلى البوابة لتتمكن من الوصول إليه في النموذج:

https://portal_IP:9443

في هذا المثال، يمكنك ضبط الوصول إلى بروتوكول أمان طبقة النقل (TLS) لاستخدام المنفذ 9443. ومع ذلك، لا يلزم استخدام المنفذ 9443 - يمكنك إعداد "البوابة" لاستخدام منفذ مختلف.

لا يمكن أن تدعم "البوابة" أكثر من نوع واحد من الطلبات (HTTP أو HTTPS) عبر منفذ واحد. ولذلك، إذا قمت بتهيئة الوصول عبر HTTPS على المنفذ 9000، فلن تتمكن من استخدام HTTP للوصول إلى المنفذ 9000. إذا كنت اضبط "البوابة" على استخدام المنفذ 9443 مع بروتوكول HTTPS، وبذلك لن يتم تفعيل البوابة على المنفذ بعد ذلك. 9000.

لضبط بروتوكول أمان طبقة النقل (TLS) في "البوابة"، اتّبِع الخطوات التالية:

  1. أنشئ ملف مفتاح وملف شهادة بتنسيق PEM.
    ملاحظة: تأكَّد من عدم توفّر كلمة مرور أو عبارة مرور على المفتاح أو الشهادة.
  2. انسخ ملفات PEM إلى دليل على عقدة "بوابة"، مثل /opt/apigee/customer/application. يجب أن يكون الوصول إلى الدليل متاحًا من خلال "apigee" المستخدم.
  3. تغيير ملكية ملفات PEM إلى "apigee" المستخدم:
    > تشون apigee:apigee /opt/apigee/customer/application/*.PEM
  4. عدِّل /opt/apigee/customer/application/portal.properties لتعيين الخصائص التالية. إذا لم يكن هذا الملف متوفّرًا، أنشئه:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # بشكل تلقائي، يستخدم الوصول عبر بروتوكول أمان طبقة النقل (TLS) المنفذ 9000.
    # استخدِم هذه السمة لتحديد منفذ مختلف.
    # baas.portal.listen=9000


    استخدِم baas.portal.ssl.protocols. لضبط بروتوكولات بروتوكول أمان طبقة النقل (TLS) التي تتيحها البوابة. للاطّلاع على قائمة بالبروتوكولات المتوافقة، يُرجى مراجعة قائمة بأسماء بروتوكولات طبقة المقابس الآمنة التي تحددها Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. ضبط عقدة البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal Configuration
  6. إعادة تشغيل البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas- Portal
  7. استخدِم الإجراء أدناه في قسم "ضبط عُقد حزمة BaaS في واجهة برمجة التطبيقات لطبقة النقل الآمنة في الحزمة أو البوابة" للتأكُّد من أنّ عقدة حزمة التكديس تتضمّن عنوان URL الصحيح لبروتوكول أمان طبقة النقل (TLS) للبوابة.

ضبط عُقد واجهة برمجة التطبيقات BaaS لطبقة النقل الآمنة على حزمة أو بوابة

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

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

في حال استخدام جهاز موازنة الحمل أمام عُقد التجميع أو ضبط بروتوكول أمان طبقة النقل (TLS) على عقدة حزمة التحديث، يجب ضبط الموقع التالي في /opt/apigee/customer/application/usergrid.properties:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

استبدِل http://localhost:8080 بعنوان URL للتحميل. موازِن. إذا تم ضبط جهاز موازنة الحمل على استخدام بروتوكول أمان طبقة النقل (TLS)، استخدِم بروتوكول HTTPS. أنت فقط تحتاج إلى تضمين المنفذ إذا كنت تستخدم منفذًا غير عادي، بمعنى آخر غير المنفذ 80 لبروتوكول HTTP والمنفذ 443 لبروتوكول HTTPS.

عليك أيضًا ضبط الموقع الإلكتروني التالي في /opt/apigee/customer/application/portal.properties إذا تستخدم جهاز موازنة الحمل أمام عُقد الحزمة:

baas.portal.config.overrideUrl=http://localhost:8080

استبدِل http://localhost:8080 بعنوان URL جهاز موازنة الحمل للحزمة.

في حال استخدام جهاز موازنة الحمل أمام عقدة "بوابة" أو ضبط بروتوكول أمان طبقة النقل (TLS) على عقدة حزمة التكديس، عليك ضبط السمات التالية في usergrid.properties:

usergrid-deployment_portal.url=http://localhost:9000

استبدِل http://localhost:9000 بعنوان URL جهاز موازنة الحمل. إذا تم ضبط جهاز موازنة الحمل على استخدام بروتوكول أمان طبقة النقل (TLS)، استخدِم بروتوكول HTTPS. إِنْتَ تحتاج فقط إلى تضمين المنفذ إذا كنت تستخدم منفذًا غير عادي، بمعنى آخر غير المنفذ 80 لبروتوكول HTTP والمنفذ 443 لبروتوكول HTTPS.

بعد تعديل usergrid.properties:

  1. إعداد عقدة التكديس:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid مسبقًا
  2. أعِد تشغيل حزمة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid إعادة التشغيل
  3. في حال عدَّلت portal.properties، اضبط عقدة البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal Configuration
  4. إعادة تشغيل بوابة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas- Portal