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

الإصدار 4.18.01 من Edge الخاص بخدمة Private Cloud

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

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

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

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

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

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

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

    من خلال هذه الإعدادات، يستخدم المطوّرون بروتوكول 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 Stack لواجهة برمجة التطبيقات

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

http://stack_IP:8080

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

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)/طبقة المقابس الآمنة (TLS) على أجهزة Edge.
    ملاحظة: تأكَّد من تطابق كلمة المرور في ملف تخزين المفاتيح والمفتاح.
  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_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks tomcat-server_secure=true


    /opt/apigee/customer/application/keystore.jks

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

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

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

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

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

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

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

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

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

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

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

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

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

    حدِّد كقيمة لهذه السمة، مثل عنوان IP أو اسم نظام أسماء النطاقات ومنفذ عقدة حزمة واجهة برمجة التطبيقات من أجل تثبيت عقدة واحدة، أو جهاز موازنة الحمل إذا كان لديك جهاز موازنة التحميل أمام عُقد BaaS Stack لواجهة برمجة التطبيقات.
  3. اضبُط عقدة البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-مدخل ضبط
  4. أعِد تشغيل البوابة باستخدام الأمر:
    > /opt/apigee/apigee-service/bin/apigee-service baas-مدخل إعادة تشغيل
  5. إذا استخدمت شهادة موقَّعة ذاتيًا عند ضبط الوصول عبر بروتوكول أمان طبقة النقل (TLS) إلى حزمة Stack أعلاه، قد لا يسمح متصفحك بإرسال طلبات إلى حزمة Stack من البوابة. إذا ظهر لك خطأ في المتصفّح يفيد بعدم السماح بالوصول عبر بروتوكول HTTPS إلى حزمة Stack، اطلب عنوان 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":
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. عدِّل الملف /opt/apigee/customer/application/portal.properties لضبط السمات التالية. إذا لم يكن هذا الملف متوفّرًا، يمكنك إنشاؤه:
    baas.مدخل.ssl=on
    baas.مدخل.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.مدخل.ssl.key=/opt/apigee/customer/application/defaultkey.pem=customer/application/protocolkey.pem
    الوصول إلى TLS0s 1 لبروتوكول أمان طبقة النقل (TLS)
    . b2S الاعدادات التلقائية للوصول إلى TLS.1.بروتوكول أمان طبقة النقل لمنفذ أمان طبقة النقل (TLS)
    .
    # استخدِم هذه السمة لتحديد منفذ مختلف.
    # baas.مدخل.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-مدخل ضبط
  6. أعِد تشغيل البوابة:
    > /opt/apigee/apigee-service/bin/apigee-service baas-مدخل إعادة تشغيل
  7. اتّبِع الإجراء التالي في قسم "ضبط عُقد BaaS Stack لواجهة برمجة التطبيقات لبروتوكول TLS على حزمة Stack أو البوابة" للتأكّد من أنّ عقدة Stack تحتوي على عنوان URL الصحيح لطبقة النقل الآمنة (TLS) للبوابة.

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

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

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

إذا كنت تستخدم موازن تحميل أمام عُقد 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/دخل.properties إذا كنت تستخدم موازن حمولة أمام عُقد تكديس:

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

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

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