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

Edge for Private Cloud‏ 4.16.09

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

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

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

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

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

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

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

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

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

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

يكون بروتوكول أمان طبقة النقل (TLS) غير مفعّل تلقائيًا في حزمة BaaS API. يمكنك بعد ذلك الوصول إلى واجهة برمجة التطبيقات 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. إذا أعددت الحزمة لاستخدام المنفذ 8443 مع بروتوكول HTTPS، لن تستمع الحزمة بعد ذلك إلى المنفذ 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. يمكنك نشر التغييرات على Tomcat:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  7. أعِد تشغيل حِزمة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  8. تأكَّد من عمل بروتوكول أمان طبقة النقل (TLS) من خلال تنفيذ الأمر cURL التالي على عقدة Stack باستخدام HTTPS:
    > curl -k https://localhost:8080/status -v

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

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

    إذا كانت البوابة تُرسل طلبات مباشرة إلى الحزمة، عليك ضبط البوابة لمحاولة الوصول إلى الحزمة عبر بروتوكول HTTPS كما هو موضّح في القسم التالي.
  11. اتّبِع الإجراء أدناه في "إعداد عقد 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 كما هو موضّح أعلاه أو في جهاز موازنة الحمل لعُقد الحزمة كما هو موضّح في المستندات الخاصة بجهاز موازنة التحميل.
  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 configure
  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 configure
  6. يمكنك نشر الإعدادات:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  7. أعِد تشغيل البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-بوابة إعادة التشغيل
  8. اتّبِع الإجراء أدناه في "إعداد عقدة حزمة API BaaS لاستخدام طبقة النقل الآمنة (TLS) على الحزمة أو البوابة" للتأكّد من أنّ عقدة الحزمة تحتوي على عنوان URL الصحيح لبروتوكول TLS في البوابة.

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

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

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

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

usergrid-deployment_swagger.basepath=http://localhost:8080
usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate
usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw

استبدِل 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_usergrid.view.management.organizations.organization.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.confirm=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. يمكنك نشر التغييرات على Tomcat:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. أعِد تشغيل حزمة BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid إعادة تشغيل
  4. إذا عدّلت portal.properties، عليك ضبط عقدة البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  5. يمكنك نشر التغييرات:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  6. أعِد تشغيل بوابة BaaS:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-portal restart