כרגע מוצג התיעוד של 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, כדאי לעיין במאמר שימוש ברשות אישורים שאינה מהימנה על ידי 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 (אבטחת שכבת התעבורה) חד-כיוונית ודו-כיוונית. למידע נוסף, אפשר לקרוא את המאמר הגדרת SSL בשרת Edge Microgateway.
אם הבעיה נמשכת, כדאי לעיין במאמר נדרש איסוף של פרטי אבחון.
הסיבה: Apigee Edge Management Server משתמש באישור בחתימה עצמית
כש-Edge Microgateway מוגדר בפעם הראשונה, אחת מהפקודות שצריך להריץ היא edgemicro configure
או edgemicro private configure
. פקודה זו תאתחל את האשכול ותיצור קשר עם Apigee Edge כדי להוריד את המידע הנדרש.
בענן הפרטי של Edge, כתובת ה-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, כדאי לעיין במאמר שימוש ברשות אישורים שאינה מהימנה על ידי 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
. צריך להעלות את הקובץ הזה במלואו לארגון ולסביבה הרלוונטיים.מסמכי עזר