מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
תיאור הבעיה
אפליקציית הלקוח מקבלת קוד תגובת HTTP של 502
עם ההודעה
Bad Gateway
בתגובה לקריאות ל-API ב-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 בענן הציבורי והפרטי |
בשרת הניהול של Apigee Edge משתמשים באישור בחתימה עצמית | כשמגדירים את Edge Microgateway בפעם הראשונה, הוא יתחבר ל-Apigee Edge באמצעות TLS ל-אתחול. אם Edge יציג אישור עם חתימה עצמית, הפעולה תיכשל. | משתמשי Edge בענן פרטי |
הסיבה: שרת היעד מציג אישור עם חתימה עצמית
אם אישור בחתימה עצמית מוצג על ידי שרת היעד לכיוון דרום, ואז 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, יש לעיין ב שימוש ב-CA שלא מהימן על ידי Node.js
אחרת, מייצאים משתנה סביבה בשם
NODE_EXTRA_CA_CERTS
, שמצביע על קובץ ה-CA ברמה הבסיסית.זה מתועד בערוץ הרשמי Node.js האתר.
אפשרות 2: להגדיר את קובץ התצורה YAML של Edge Microgateway כדי לתת אמון האישור של שרת היעד הזה
- חשוב לוודא שיש לכם את האישור (או שרשרת) של שרת היעד בפורמט PEM. שפת תרגום להמיר פורמטים אחרים של אישורים ל-PEM, פועלים לפי ההוראות המרת האישורים לפורמט נתמך.
אם יש שרשרת אישורים, צריך לוודא שהאישורים נכונים הזמנה. אישור העלה צריך להיות ראשון תמיד, ואחריו שלב הביניים ואז את אישור הבסיס. יש הסבר נוסף בנושא מתבצע אימות של שרשרת האישורים.
בדוגמה הבאה הגדרנו את קובץ ה-CA המהימן עבור
untrusted-root.badssl.com
edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
ההוראות להגדרה של ההגדרות האלה מפורטות גם Edge Microgateway Module – הגדרת סרטון TLS חד-כיווני ודו-כיווני של 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:
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, יש לעיין ב שימוש ב-CA שלא מהימן על ידי Node.js.
- אחרת, מייצאים משתנה סביבה בשם
NODE_EXTRA_CA_CERTS
, שמצביעים על קובץ ה-CA ברמה הבסיסית. מתועד בדף הרשמי אתר 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