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

الإصدار 4.18.01 من Edge for Private Cloud

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

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

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

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

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

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

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

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

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

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

    من بين الخيارات غير الموضّحة أعلاه استخدام جهاز موازنة الحمل أمام عقدة "البوابة". في هذه الحالة، يمكنك ضبط بروتوكول أمان طبقة النقل (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

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

http://stack_IP:8080

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

https://stack_IP:8080

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

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

اتّبِع الإجراء التالي لضبط وصول بروتوكول أمان طبقة النقل (TLS) إلى Stack:

  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
    # By default, TLS access uses port 8080.
    # Use this property to specify a different port.
    # tomcat-server_port=8080


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

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

    استخدِم tomcat-server_ssl.protocols لضبط بروتوكولات أمان طبقة النقل (TLS) التي تتيحها حزمة Stack. للاطّلاع على قائمة بالبروتوكولات المتوافقة مع 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. كرِّر هذه الخطوات على جميع عُقد Stack.
  9. إذا كان لديك جهاز موازنة حمل أمام عُقد Stack، اضبط جهاز موازنة الحمل لإرسال الطلبات إلى عُقد Stack عبر HTTPS. لمزيد من المعلومات، يمكنك الاطّلاع على المستندات المتعلّقة بجهاز موازنة الحمل.

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

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

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

يتم عادةً ضبط تثبيت API BaaS على أحد الخيارين التاليين:

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

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

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

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

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

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

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

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

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

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

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

http://portal_IP:9000

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

https://portal_IP:9443

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

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

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

  1. أنشئ ملف مفتاح وملف شهادة بتنسيق PEM.
    ملاحظة: تأكَّد من عدم وجود كلمة مرور أو عبارة مرور على المفتاح أو الشهادة.
  2. انسخ ملفات PEM إلى دليل على عقدة "البوابة"، مثل /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
    # By default, TLS access uses port 9000.
    # Use this property to specify a different port.
    # baas.portal.listen=9000


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

إعداد عُقد API BaaS لبروتوكول أمان طبقة النقل (TLS) على Stack أو Portal

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

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

إذا كنت تستخدم جهاز موازنة الحمل أمام عُقد 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 الخاص بجهاز موازنة الحمل في Stack.

إذا كنت تستخدم جهاز موازنة الحمل أمام عقدة "البوابة" أو تضبط بروتوكول أمان طبقة النقل (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 configure
  2. أعِد تشغيل حزمة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. إذا عدّلت portal.properties، اضبط عقدة "المدخل":??
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. أعِد تشغيل بوابة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart