أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المشكلة
يتلقّى تطبيق العميل رمز استجابة 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 و Private Cloud |
يستخدم Apigee Edge Management Server شهادة موقَّعة ذاتيًا | عند إعداد بوابة 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
، يشير إلى ملف CA الجذري.وقد تم توثيق ذلك في 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 - ضبط الفيديو الأحادي الاتجاه وثنائي الاتجاه عبر بروتوكول أمان طبقة النقل (TLS) في اتجاه واحد ارجع إلى إعداد طبقة المقابس الآمنة (SSL) على خادم Edge Microgateway للحصول على مزيد من المعلومات
في حال استمرار المشكلة، انتقِل إلى يجب جمع معلومات التشخيص.
السبب: يستخدم Apigee Edge Management Server شهادة موقعة ذاتيًا
عند إعداد 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
، الذي يشير إلى ملف CA الجذر.وهذا هو موثقة على موقع Node.js الإلكتروني.
يجب جمع معلومات التشخيص
في حال استمرار المشكلة حتى بعد اتّباع التعليمات أعلاه، يُرجى جمع ما يلي معلومات التشخيص، ثم التواصل مع فريق دعم Apigee Edge:
- ملفات السجلّ: المجلد التلقائي هو
/var/tmp
ولكن قد يتم تجاوزه في ملفconfig.yaml
الرئيسي (logging > dir parameter
). من المهم يُنصح بتغييرlog > level
إلىinfo
قبل تقديم السجل إلى Apigee Edge Support. - ملف الإعدادات: تكمن الإعدادات الرئيسية لـ Edge Microgateway في YAML
في مجلد Edge Microgateway التلقائي،
$HOME/.edgemicro
. تتوفر ملف إعداد تلقائي باسمdefault.yaml
ثم ملف إعداد واحد لكل بيئة ORG-ENV-config.yaml
. تحميل هذا الملف المؤسسة والبيئة المتأثّرةالمستندات المرجعية
ضبط واجهة مستخدم Edge لاستخدام بروتوكول أمان طبقة النقل (TLS) للوصول إلى واجهة برمجة تطبيقات Edge