คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสการตอบกลับ HTTP เป็น 502 พร้อมข้อความ
Bad Gateway เป็นการตอบกลับการเรียก API ใน Edge Microgateway
หรือผู้ดูแลระบบจะได้รับข้อผิดพลาด self signed certificate in certificate
chain เมื่อเรียกใช้คำสั่ง
edgemicro configure
ข้อความแสดงข้อผิดพลาด
ไคลเอ็นต์จะเห็นข้อความตอบกลับต่อไปนี้
HTTP/1.1 502 Bad Gateway
ตัวอย่างการตอบกลับข้อผิดพลาดที่พบบ่อย 2 รายการมีดังนี้
{"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' }สาเหตุที่เป็นไปได้
| สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาที่ใช้ได้กับ |
|---|---|---|
| เซิร์ฟเวอร์เป้าหมายแสดงใบรับรองแบบ Self-signed | Edge Microgateway จะตรวจสอบใบรับรองของเซิร์ฟเวอร์เป้าหมาย และหากไม่น่าเชื่อถือ ระบบจะแสดงข้อผิดพลาดรันไทม์ | ผู้ใช้ Edge Public และ Private Cloud |
| เซิร์ฟเวอร์การจัดการ Apigee Edge ใช้ใบรับรองแบบ Self-signed | เมื่อกำหนดค่า Edge Microgateway เป็นครั้งแรก ระบบจะเชื่อมต่อกับ Apigee Edge ผ่าน TLS เพื่อเริ่มต้นระบบ หาก Edge แสดงใบรับรองแบบ Self-signed การดำเนินการนี้จะล้มเหลว | ผู้ใช้ Edge Private Cloud |
สาเหตุ: เซิร์ฟเวอร์เป้าหมายแสดงใบรับรองแบบ Self-signed
หากเซิร์ฟเวอร์เป้าหมายแสดงใบรับรองแบบ Self-signed ในการเชื่อมต่อ ขาออก Edge Microgateway จะแสดงข้อผิดพลาดนี้โดยค่าเริ่มต้นเนื่องจาก ไม่เชื่อถือใบรับรองแบบ Self-signed
การวินิจฉัย
คุณอาจเห็นข้อผิดพลาดต่อไปนี้ในบันทึก (/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 มี
แนวโน้มสูงที่จะได้รับใบรับรองแบบ Self-signed จากเซิร์ฟเวอร์เป้าหมาย หากต้องการยืนยัน ให้ทำตามขั้นตอนต่อไปนี้
- เรียกใช้คำสั่ง
opensslต่อไปนี้เพื่อตรวจสอบชุดใบรับรองของเซิร์ฟเวอร์เป้าหมายecho | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
หากชุดใบรับรองของเซิร์ฟเวอร์เป้าหมายเป็นแบบ Self-signed จริงๆ แสดงว่านี่คือสาเหตุของ ปัญหา
ในตัวอย่างต่อไปนี้ ให้สังเกตว่าเซิร์ฟเวอร์เป้าหมายแสดงใบรับรองแบบ Self-signed
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 ที่เหมาะสมซึ่งลงนามโดยa ผู้ออกใบรับรอง (CA) ที่เชื่อถือได้
หากทำไม่ได้ ให้พิจารณาตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้เพื่ออนุญาตใบรับรองแบบ Self-signed ใน Edge Microgateway
ตัวเลือกที่ 1: ตั้งค่าพร็อพเพอร์ตี้ของระบบเพื่ออนุญาตให้ Edge Microgateway เชื่อถือ ใบรับรองทั้งหมด
- หากคุณใช้ Docker โปรดดู การใช้ CA ที่ Node.js ไม่เชื่อถือ
หากไม่ได้ใช้ Docker ให้ส่งออกตัวแปรสภาพแวดล้อมที่ชื่อ
NODE_EXTRA_CA_CERTS, ซึ่งชี้ไปยังไฟล์ CA รูทซึ่งมีการระบุไว้ในเว็บไซต์อย่างเป็นทางการของ Node.js
ตัวเลือกที่ 2: กำหนดค่าไฟล์การกำหนดค่า YAML ของ Edge Microgateway ให้เชื่อถือใบรับรองที่เฉพาะเจาะจง สำหรับเซิร์ฟเวอร์เป้าหมายนั้น
- ตรวจสอบว่าคุณมีใบรับรอง (หรือชุดใบรับรอง) ของเซิร์ฟเวอร์เป้าหมายในรูปแบบ PEM หากต้องการ แปลงใบรับรองรูปแบบอื่นๆ เป็น PEM ให้ทำตามวิธีการในหัวข้อ การแปลงใบรับรองเป็นรูปแบบที่รองรับ
หากมีชุดใบรับรอง ให้ตรวจสอบว่าใบรับรองอยู่ในลำดับที่ถูกต้อง ใบรับรองลีฟควรอยู่แรกสุดเสมอ ตามด้วยใบรับรองระดับกลาง แล้วจึงเป็นใบรับรองรูท ดูคำอธิบายเพิ่มเติมได้ที่ การตรวจสอบชุดใบรับรอง
ในตัวอย่างต่อไปนี้ เราได้กำหนดค่าไฟล์ CA ที่เชื่อถือได้สำหรับ
untrusted-root.badssl.comedgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
วิธีการกำหนดค่านี้ยังอธิบายไว้ใน วิดีโอโมดูล Edge Microgateway - กำหนดค่า TLS ขาออกแบบ 1 ทางและ 2 ทาง ดูข้อมูลเพิ่มเติมได้ที่ การกำหนดค่า SSL ในเซิร์ฟเวอร์ Edge Microgateway
หากปัญหายังคงอยู่ ให้ไปที่ ข้อมูลการวินิจฉัยที่ต้องรวบรวม.
สาเหตุ: เซิร์ฟเวอร์การจัดการ Apigee Edge ใช้ใบรับรองแบบ Self-signed
เมื่อตั้งค่า 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
หากเซิร์ฟเวอร์การจัดการได้รับการกำหนดค่าด้วยใบรับรองแบบ Self-signed คุณจะได้รับข้อผิดพลาดต่อไปนี้ในเอาต์พุตของคอนโซล
{ 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 แบบ Self-signed - เป็นไปได้ว่าผู้ดูแลระบบ Apigee Edge ได้ให้ใบรับรอง และมีสำเนาของใบรับรองดังกล่าว
- หากไม่ได้ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อรับข้อมูลเกี่ยวกับใบรับรอง
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- หากเซิร์ฟเวอร์การจัดการมีใบรับรองแบบ Self-signed แสดงว่านั่นคือสาเหตุของปัญหานี้
ความละเอียด
- ทำงานร่วมกับทีมที่เป็นเจ้าของเซิร์ฟเวอร์เป้าหมายเพื่อจัดหาใบรับรอง TLS ที่เหมาะสมซึ่งลงนามโดยa ผู้ออกใบรับรอง (CA) ที่เชื่อถือได้
หากทำไม่ได้ ให้ทำดังต่อไปนี้เพื่ออนุญาตใบรับรองแบบ Self-signed ใน Edge Microgateway
- ตั้งค่าพร็อพเพอร์ตี้ของระบบเพื่ออนุญาตให้ Edge Microgateway เชื่อถือใบรับรองทั้งหมด
- หากคุณใช้ Docker โปรดดู การใช้ CA ที่ Node.js ไม่เชื่อถือ
- หากไม่ได้ใช้ Docker ให้ส่งออกตัวแปรสภาพแวดล้อมที่ชื่อ
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ให้อัปโหลดไฟล์นี้แบบเต็มสำหรับองค์กรและสภาพแวดล้อมที่ได้รับผลกระทบเอกสารอ้างอิง