أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
يتلقّى تطبيق العميل رمز استجابة HTTP بقيمة 502 مع الرسالة Bad Gateway كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات في Edge Microgateway.
بدلاً من ذلك، سيظهر للمشرف الخطأ self signed certificate in certificate
chain عند تنفيذ الأمر
edgemicro configure.
رسالة الخطأ
ستظهر رسالة الرد التالية للعميل:
HTTP/1.1 502 Bad Gateway
في ما يلي مثالان شائعان على ردود الأخطاء:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
بدلاً من ذلك، يمكن أن يحدث هذا الخطأ عند تنفيذ edgemicro configure:
{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }الأسباب المحتملة
| السبب | الوصف | تعليمات تحديد المشاكل وحلّها التي تنطبق على |
|---|---|---|
| يقدّم الخادم المستهدف شهادة موقَّعة ذاتيًا | ستتحقّق Edge Microgateway من شهادة الخادم المستهدف، وإذا لم تكن موثوقة، سيحدث خطأ في وقت التشغيل. | مستخدمو Edge Public Cloud وEdge Private Cloud |
| يستخدم خادم إدارة Apigee Edge شهادة موقَّعة ذاتيًا | عند ضبط إعدادات Edge Microgateway للمرة الأولى، سيتصل بـ Apigee Edge عبر بروتوكول أمان طبقة النقل (TLS) لعملية التمهيد. إذا عرض Edge شهادة موقَّعة ذاتيًا، ستفشل العملية. | مستخدمو Edge Private Cloud |
السبب: يعرض الخادم المستهدف شهادة موقعة ذاتيًا
إذا قدّم الخادم المستهدف شهادة موقَّعة ذاتيًا عند الاتصال بالاتجاه الجنوبي، ستعرض Edge Microgateway هذا الخطأ تلقائيًا لأنّها لا تثق في الشهادات الموقَّعة ذاتيًا.
التشخيص
قد يظهر لك الخطأ التالي في السجلات (/var/tmp/edgemicro-`hostname`-
*.log):
2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80- b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate chain][SELF_SIGNED_CERT_IN_CHAIN][]
يشير رمز الخطأ SELF_SIGNED_CERT_IN_CHAIN إلى أنّ Edge Microgateway تلقّى على الأرجح شهادة موقَّعة ذاتيًا من الخادم المستهدف. للتأكّد من ذلك، اتّبِع الخطوات التالية:
- نفِّذ أمر
opensslالتالي للتحقّق من سلسلة شهادات الخادم المستهدف:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
إذا كانت سلسلة شهادات الخادم المستهدف موقَّعة ذاتيًا، سيكون هذا هو سبب المشكلة.
في المثال التالي، لاحظ أنّ الخادم المستهدف يعرض شهادة موقّعة ذاتيًا:
echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority verify error:num=19:self signed certificate in certificate chain verify return:0 DONE
الدقة
- يجب التواصل مع الفريق المسؤول عن الخادم المستهدف للحصول على شهادة TLS مناسبة موقَّعة من هيئة إصدار شهادات (CA) موثوق بها.
إذا لم يكن ذلك ممكنًا، يمكنك اتّباع أحد الخيارات التالية للسماح بشهادات موقّعة ذاتيًا في Edge Microgateway.
الخيار 1: ضبط خاصية نظام للسماح لـ Edge Microgateway بالوثوق في جميع الشهادات
- في حال استخدام docker، يُرجى الرجوع إلى استخدام مرجع تصديق غير معتمَد من Node.js
بخلاف ذلك، صدِّر متغيّر بيئة باسم
NODE_EXTRA_CA_CERTSيشير إلى ملف مرجع تصديق الجذر.يمكنك الاطّلاع على هذه المعلومات في الموقع الإلكتروني الرسمي Node.js.
الخيار 2: ضبط ملف إعداد Edge Microgateway YAML للوثوق بهذه الشهادة المحدّدة لخادم الهدف هذا
- تأكَّد من توفّر شهادة الخادم المستهدف (أو السلسلة) بتنسيق PEM. لتحويل تنسيقات الشهادات الأخرى إلى PEM، اتّبِع التعليمات الواردة في تحويل الشهادات إلى تنسيق متوافق.
في حال توفّر سلسلة شهادات، تأكَّد من أنّ الشهادات مرتبة بالترتيب الصحيح. يجب أن تكون شهادة العقدة الطرفية في المقدّمة دائمًا، تليها الشهادة الوسيطة، ثم شهادة الجذر. يتوفّر المزيد من الشرح حول هذا الموضوع في مقالة التحقّق من صحة سلسلة الشهادات.
في المثال التالي، قمنا بضبط ملف هيئة إصدار الشهادات الموثوق بها لـ
untrusted-root.badssl.com.edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
تتوفّر أيضًا تعليمات حول كيفية ضبط هذا الإعداد في الفيديو Edge Microgateway Module - Configure 1-way and 2-way Southbound TLS. لمزيد من المعلومات، يُرجى الرجوع إلى ضبط طبقة المقابس الآمنة (SSL) على خادم Edge Microgateway.
إذا استمرت المشكلة، انتقِل إلى يجب جمع معلومات التشخيص.
السبب: يستخدم خادم إدارة Apigee Edge شهادة موقَّعة ذاتيًا
عند إعداد Edge Microgateway للمرة الأولى، سيكون عليك تنفيذ أحد الأمرين التاليين: edgemicro configure أو edgemicro private configure. سيؤدي هذا الأمر إلى بدء تشغيل المجموعة، وسيتواصل مع Apigee Edge لتنزيل المعلومات المطلوبة.
بالنسبة إلى Edge Private Cloud، يتم تحديد عنوان URL لخادم الإدارة من خلال الوسيطة -m.
في حال تفعيل بروتوكول أمان طبقة النقل (TLS) لخادم الإدارة، سيحاول Edge Microgateway التحقّق من الشهادة التي يعرضها خادم الإدارة.
في ما يلي مثال على أمر edgemicro configure لخدمة Edge Private Cloud:
edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443
إذا تم ضبط "خادم الإدارة" باستخدام شهادة موقَّعة ذاتيًا، سيظهر لك الخطأ التالي في ناتج وحدة التحكّم.
{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }التشخيص
- في هذه الحالة، قد يعرض خادم الإدارة (
management.apigee-dev.net) شهادة TLS موقَّعة ذاتيًا. - من المحتمل أنّ مشرف نظام Apigee Edge قد قدّم الشهادة ولديه نسخة منها.
- بخلاف ذلك، شغِّل الأمر التالي للحصول على معلومات حول الشهادة:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- إذا كان "خادم الإدارة" يتضمّن شهادة موقَّعة ذاتيًا، سيكون ذلك هو سبب هذه المشكلة.
الدقة
- يجب التواصل مع الفريق المسؤول عن الخادم المستهدف للحصول على شهادة TLS مناسبة موقَّعة من هيئة إصدار شهادات (CA) موثوق بها.
إذا لم يكن ذلك ممكنًا، اتّبِع الخطوات التالية للسماح بالشهادات الموقَّعة ذاتيًا في Edge Microgateway.
- اضبط خاصية نظام للسماح لـ Edge Microgateway بالوثوق في جميع الشهادات.
- إذا كنت تستخدم docker، يُرجى الرجوع إلى استخدام مرجع تصديق غير معتمَد من Node.js.
- بخلاف ذلك، عليك تصدير متغيّر بيئة باسم
NODE_EXTRA_CA_CERTSيشير إلى ملف مرجع التصديق الجذر.يمكنك الاطّلاع على تفاصيل ذلك في الموقع الإلكتروني الرسمي Node.js.
يجب جمع معلومات التشخيص
إذا استمرت المشكلة حتى بعد اتّباع التعليمات أعلاه، اجمع معلومات التشخيص التالية ثم تواصَل مع فريق دعم Apigee Edge:
- ملفات السجلّ: المجلد التلقائي هو
/var/tmp، ولكن يمكن إلغاء هذا الإعداد في ملفconfig.yamlالرئيسي (logging > dir parameter). يُنصح بتغييرlog > levelإلىinfoقبل تقديم ملفات السجلّ إلى فريق الدعم في Apigee Edge. - ملف الإعداد: تقع الإعدادات الرئيسية لـ Edge Microgateway في ملف YAML
في مجلد Edge Microgateway التلقائي،
$HOME/.edgemicro. هناك ملف إعداد تلقائي باسمdefault.yaml، ثم ملف لكل بيئة ORG-ENV-config.yaml. حمِّل هذا الملف بالكامل للمؤسسة والبيئة المتأثرتين.المستندات المرجعية
ضبط واجهة مستخدم Edge لاستخدام بروتوكول TLS للوصول إلى Edge API