คุณกำลังดูเอกสารประกอบของ 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' }
สาเหตุที่เป็นไปได้
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาที่ใช้กับ |
---|---|---|
เซิร์ฟเวอร์เป้าหมายแสดงใบรับรองแบบ Self-signed | Edge Microgateway จะยืนยันใบรับรองของเซิร์ฟเวอร์เป้าหมาย และหากไม่เชื่อถือ เซิร์ฟเวอร์ก็จะเกิดข้อผิดพลาดรันไทม์ | ผู้ใช้ Edge Public และ Private Cloud |
เซิร์ฟเวอร์การจัดการ Edge ของ Apigee ใช้ใบรับรองที่ลงนามด้วยตนเอง | เมื่อกำหนดค่า Edge Microgateway เป็นครั้งแรก จะมีการเชื่อมต่อกับ Apigee Edge ผ่าน TLS เพื่อเริ่มต้น ถ้า Edge แสดงใบรับรองที่ลงนามด้วยตนเอง ใบรับรองนี้จะล้มเหลว | ผู้ใช้ Edge Private Cloud |
สาเหตุ: เซิร์ฟเวอร์เป้าหมายแสดงใบรับรองแบบ Self-signed
หากเซิร์ฟเวอร์เป้าหมายแสดง ใบรับรองแบบ Self-signed ที่การเชื่อมต่อ ทางใต้ 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
-
หากเชนใบรับรองของเซิร์ฟเวอร์เป้าหมายลงชื่อด้วยตนเอง แสดงว่าเป็นสาเหตุของปัญหา
ในตัวอย่างต่อไปนี้ คุณจะเห็นว่าเซิร์ฟเวอร์เป้าหมายมีใบรับรองแบบ 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 ที่เหมาะสมซึ่งลงนามโดยผู้ออกใบรับรอง (CA) ที่เชื่อถือได้
หากทำไม่ได้ ให้พิจารณาตัวเลือกต่อไปนี้เพื่ออนุญาตใบรับรองแบบ Self-signed ใน 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 Module - กำหนดค่า TLS แบบทางเดียวและ 2 ทาง โปรดดูข้อมูลเพิ่มเติมที่ การกำหนดค่า 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
หากมีการกำหนดค่าเซิร์ฟเวอร์การจัดการด้วยใบรับรองแบบ 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 ที่เหมาะสมซึ่งลงนามโดยผู้ออกใบรับรอง (CA) ที่เชื่อถือได้
หากทำไม่ได้ ให้ดำเนินการดังต่อไปนี้เพื่ออนุญาตใบรับรองแบบ Self-signed ใน 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
โปรดอัปโหลดไฟล์นี้แบบเต็มสำหรับองค์กรและสภาพแวดล้อมที่ได้รับผลกระทบเอกสารอ้างอิง