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

Edge for Private Cloud‏ 4.17.01

بروتوكول أمان طبقة النقل (TLS) (المعروف سابقًا باسم طبقة المقابس الآمنة) هو تقنية الأمان القياسية لضمان المراسلة الآمنة المشفّرة في بيئة واجهة برمجة التطبيقات. يمكنك ضبط بروتوكول أمان طبقة النقل (TLS) في بوابة API BaaS وعقد API BaaS Stack.

تعرض الصورة التالية مخطّطًا بيانيًا نموذجيًا للنشر في بنية BaaS المستندة إلى واجهة برمجة التطبيقات مع عقدة واحدة لبوابة BaaS وثلاث عقد لـ API BaaS Stack.

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

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

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

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

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

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

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

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

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

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

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

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

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

ضبط بروتوكول أمان طبقة النقل (TLS) في حزمة API BaaS Stack

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

http://stack_IP:8080

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

https://stack_IP:8080

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

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

اتّبِع الإجراء التالي لضبط إعدادات الوصول إلى Stack باستخدام بروتوكول TLS:

  1. أنشئ ملف JKS لتخزين المفاتيح يحتوي على شهادة بروتوكول أمان طبقة النقل (TLS) ومفتاحك الخاص. لمزيد من المعلومات، يُرجى الاطّلاع على ضبط بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL) لتطبيق Edge On Premises.
    ملاحظة: تأكَّد من أنّ كلمة المرور في ملف تخزين المفاتيح هي نفسها كلمة المرور للمفتاح.
  2. انسخ ملف JKS الخاص بملف تخزين المفاتيح إلى دليل على عقدة Stack، مثل /opt/apigee/customer/application. يجب أن يكون الدليل متاحًا لمستخدم apigee.
  3. غيِّر ملكية ملف JKS إلى مستخدم "apigee":
    > chown 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


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

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

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

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

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

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

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

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

يتم عادةً ضبط عملية تثبيت بنية BaaS المستندة إلى واجهة برمجة التطبيقات لإجراء أيّ مما يلي:

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

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

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

    اضبط البوابة للوصول إلى الحزمة عبر HTTPS كما هو موضّح أدناه.

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

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

    حدِّد عنوان IP أو اسم نظام أسماء النطاقات وعنوان المنفذ الخاص بعقدة "مجموعة حِزم واجهة برمجة التطبيقات" في حال تثبيت عقدة واحدة، أو حدِّد عنوان المنفذ الخاص بجهاز موازنة التحميل إذا كان لديك جهاز موازنة تحميل أمام عقد "مجموعة حِزم واجهة برمجة التطبيقات لخدمات تكنولوجيا المعلومات".
  3. اضبط عقدة البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas- Portal Configuration
  4. أعِد تشغيل البوابة باستخدام الأمر:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. إذا استخدمت شهادة موقَّعة ذاتيًا عند ضبط إمكانية الوصول إلى Stack باستخدام بروتوكول أمان طبقة النقل (TLS) описанة أعلاه، قد لا يسمح متصفّحك بطلبات الوصول إلى Stack من البوابة. إذا ظهرت لك رسالة خطأ في المتصفّح تفيد بأنّه لا يُسمح بالوصول إلى "مجموعة الخدمات" باستخدام بروتوكول 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 إلى دليل على عقدة Portal، مثل /opt/apigee/customer/application. يجب أن يتمكن المستخدم "apigee" من الوصول إلى الدليل.
  3. غيِّر ملكية ملفات PEM إلى المستخدم "apigee":
    > chown 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 restart
  7. اتّبِع الإجراء أدناه في "إعداد عقدة حزمة API BaaS لاستخدام طبقة النقل الآمنة (TLS) على الحزمة أو البوابة" للتأكّد من أنّ عقدة الحزمة تحتوي على عنوان URL الصحيح لبروتوكول TLS في البوابة.

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

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

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

إذا كنت تستخدم أداة موازنة التحميل أمام عقد Stack أو تضبط بروتوكول أمان طبقة النقل (TLS) على عقدة Stack، اضبط السمة التالية في /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 إذا كنت تستخدم أداة موازنة التحميل أمام عقد Stack:

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

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

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

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

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

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

  1. كوِّن عقدة Stack:
    > /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