คุณกำลังดูเอกสารประกอบ 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
ตัวอย่างการตอบกลับข้อผิดพลาดที่พบบ่อย 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' }
สาเหตุที่เป็นไปได้
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
---|---|---|
เซิร์ฟเวอร์เป้าหมายแสดงใบรับรองที่ลงนามด้วยตนเอง | Edge Microgateway จะตรวจสอบใบรับรองของเซิร์ฟเวอร์เป้าหมาย และในกรณีที่ใบรับรองไม่เชื่อถือ จะทำให้เกิดข้อผิดพลาดรันไทม์ | ผู้ใช้ 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 ให้ดู การใช้ CA ที่ Node.js ไม่เชื่อถือ
หรือส่งออกตัวแปรสภาพแวดล้อมที่ชื่อว่า
NODE_EXTRA_CA_CERTS
ซึ่งชี้ไปยังไฟล์ CA ระดับรูทนี่คือเอกสารประกอบใน Node.js เว็บไซต์ของคุณ
ตัวเลือกที่ 2: กำหนดค่าไฟล์การกำหนดค่า Edge Microgateway YAML เพื่อเชื่อถือการกำหนดค่าดังกล่าว สำหรับเซิร์ฟเวอร์เป้าหมายนั้น
- ตรวจสอบว่าคุณมีใบรับรอง (หรือเชน) ของเซิร์ฟเวอร์เป้าหมายในรูปแบบ PEM ถึง แปลงรูปแบบใบรับรองอื่นๆ เป็น PEM โดยปฏิบัติตามคำแนะนำใน กำลังแปลงใบรับรองเป็นรูปแบบที่รองรับ
หากมีชุดใบรับรอง ให้ตรวจสอบว่าใบรับรองนั้นอยู่ใน คำสั่งซื้อ ใบรับรอง Leaf ควรอยู่ก่อนแล้วตามด้วยใบกลางเสมอ แล้วเลือกใบรับรองรูท มีคำอธิบายเพิ่มเติมเกี่ยวกับเรื่องนี้ใน กำลังตรวจสอบชุดใบรับรอง
ในตัวอย่างต่อไปนี้ เราได้กำหนดค่าไฟล์ CA ที่เชื่อถือสำหรับ
untrusted-root.badssl.com
edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
นอกจากนี้ คำแนะนำสำหรับการกำหนดค่านี้ยังครอบคลุมอยู่ใน โมดูล Edge Microgateway - กำหนดค่าวิดีโอ TLS แบบ 2 ทางและทิศใต้แบบ 2 ทาง โปรดดู การกําหนดค่า 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
- หากเซิร์ฟเวอร์การจัดการมีใบรับรองแบบ Self- Signing สาเหตุของปัญหานี้ ปัญหา
ความละเอียด
- ทำงานร่วมกับทีมที่เป็นเจ้าของเซิร์ฟเวอร์เป้าหมายเพื่อจัดหาใบรับรอง 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
อัปโหลดไฟล์นี้ ฉบับเต็มสำหรับองค์กรและสภาพแวดล้อมที่ได้รับผลกระทบเอกสารอ้างอิง