Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Gejala
Aplikasi klien menerima kode respons HTTP 502
dengan pesan
Bad Gateway
sebagai respons untuk panggilan API di Edge Microgateway.
Atau, administrator akan mendapatkan error self signed certificate in certificate
chain
saat menjalankan perintah
edgemicro configure
.
Pesan error
Klien akan melihat pesan respons berikut:
HTTP/1.1 502 Bad Gateway
Dua contoh umum respons error adalah:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
Atau, error ini dapat terjadi saat menjalankan 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' }
Kemungkinan penyebab
Penyebab | Deskripsi | Petunjuk pemecahan masalah yang berlaku untuk |
---|---|---|
Server target memberikan sertifikat yang ditandatangani sendiri | Edge Microgateway akan memverifikasi sertifikat server target, dan jika server tidak dipercaya, error akan terjadi saat runtime. | Pengguna Edge Publik dan Private Cloud |
Server Pengelolaan Apigee Edge menggunakan sertifikat yang ditandatangani sendiri | Saat mengonfigurasi Edge Microgateway untuk pertama kalinya, Edge akan terhubung ke Apigee Edge melalui TLS ke bootstrap. Jika Edge menyajikan sertifikat yang ditandatangani sendiri, proses ini akan gagal. | Pengguna Edge Private Cloud |
Penyebab: Server target menyajikan sertifikat yang ditandatangani sendiri
Jika sertifikat yang ditandatangani sendiri ditampilkan oleh server target pada koneksi selatan, Edge Microgateway secara default akan melaporkan error ini karena tidak memercayai sertifikat yang ditandatangani sendiri.
Diagnosis
Anda mungkin melihat error berikut di log (/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][]
Kode error SELF_SIGNED_CERT_IN_CHAIN
menunjukkan bahwa Edge Microgateway kemungkinan besar telah menerima sertifikat yang ditandatangani sendiri dari server target. Untuk mengonfirmasi hal ini, lakukan
langkah-langkah berikut:
- Jalankan perintah
openssl
berikut untuk memverifikasi rantai sertifikat server target:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Jika rantai sertifikat server target memang ditandatangani sendiri, inilah penyebab masalah tersebut.
Pada contoh berikut, perhatikan bahwa server target menyajikan sertifikat yang ditandatangani sendiri:
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
Resolusi
- Bekerja samalah dengan tim yang memiliki server target untuk mendapatkan sertifikat TLS yang tepat dan ditandatangani oleh Certificate Authority (CA) tepercaya.
Jika tidak memungkinkan, pertimbangkan salah satu opsi berikut untuk mengizinkan sertifikat yang ditandatangani sendiri di Edge Microgateway.
Opsi #1: Tetapkan properti sistem untuk mengizinkan Edge Microgateway memercayai semua sertifikat
- Jika Anda menggunakan docker, lihat Menggunakan CA yang tidak dipercaya oleh Node.js
Jika tidak, ekspor variabel lingkungan bernama
NODE_EXTRA_CA_CERTS
, yang mengarah ke file root CA.Hal ini didokumentasikan di situs resmi Node.js.
Opsi #2: Konfigurasikan file konfigurasi YAML Edge Microgateway agar memercayai sertifikat tertentu untuk server target
- Pastikan Anda memiliki sertifikat (atau rantai) server target dalam format PEM. Untuk mengonversi format sertifikat lain ke PEM, ikuti petunjuk di Mengonversi sertifikat ke format yang didukung.
Jika ada rantai sertifikat, pastikan sertifikat tersebut dalam urutan yang benar. leaf certificate harus selalu ditempatkan pada urutan pertama, diikuti oleh intermediate certificate, lalu root certificate. Ada penjelasan lebih lanjut tentang hal ini di Memvalidasi rantai sertifikat.
Pada contoh berikut, kami telah mengonfigurasi file CA tepercaya untuk
untrusted-root.badssl.com
.edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
Petunjuk untuk mengonfigurasi hal ini juga dibahas di video Modul Edge Microgateway - Mengonfigurasi TLS 1 arah dan 2 arah. Lihat Mengonfigurasi SSL di server Edge Microgateway untuk informasi selengkapnya.
Jika masalah masih berlanjut, buka Harus mengumpulkan informasi diagnostik.
Penyebab: Apigee Edge Management Server menggunakan sertifikat yang ditandatangani sendiri
Saat Edge Microgateway disiapkan untuk pertama kalinya, salah satu perintah yang perlu Anda jalankan adalah edgemicro configure
atau edgemicro private configure
. Perintah ini akan mem-bootstrap cluster, dan akan menghubungi Apigee Edge untuk mendownload informasi yang diperlukan.
Untuk Edge Private Cloud, URL Server Pengelolaan ditentukan oleh argumen -m
.
Jika Anda telah mengaktifkan TLS untuk Server Pengelolaan, Edge Microgateway akan mencoba memverifikasi sertifikat yang diberikan oleh Server Pengelolaan.
Contoh perintah edgemicro configure
untuk Edge Private Cloud adalah sebagai berikut:
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
Jika Server Pengelolaan dikonfigurasi dengan sertifikat yang ditandatangani sendiri, Anda akan mendapatkan error berikut di output konsol.
{ 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' }
Diagnosis
- Dalam hal ini, Server Pengelolaan
(
management.apigee-dev.net
) mungkin menampilkan sertifikat TLS yang ditandatangani sendiri. - Kemungkinan administrator sistem Apigee Edge Anda telah memberikan sertifikat tersebut dan memiliki salinannya.
- Jika tidak, jalankan perintah berikut untuk mendapatkan informasi tentang sertifikat:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- Jika Server Pengelolaan memiliki sertifikat yang ditandatangani sendiri, itulah penyebab masalah ini.
Resolusi
- Bekerja samalah dengan tim yang memiliki server target untuk mendapatkan sertifikat TLS yang tepat dan ditandatangani oleh Certificate Authority (CA) tepercaya.
Jika tidak memungkinkan, lakukan hal berikut untuk mengizinkan sertifikat yang ditandatangani sendiri di Edge Microgateway.
- Setel properti sistem untuk mengizinkan Edge Microgateway memercayai semua sertifikat.
- Jika Anda menggunakan docker, lihat Menggunakan CA yang tidak dipercaya oleh Node.js.
- Jika tidak, ekspor variabel lingkungan bernama
NODE_EXTRA_CA_CERTS
, yang mengarah ke file root CA.Hal ini didokumentasikan di situs resmi Node.js.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Dukungan Apigee Edge:
- File log: Folder default-nya adalah
/var/tmp
, tetapi mungkin diganti dalam fileconfig.yaml
utama (logging > dir parameter
). Sebaiknya ubahlog > level
keinfo
sebelum memberikan file log ke Apigee Edge Support. - File konfigurasi: Konfigurasi utama Edge Microgateway berada dalam file YAML di folder Edge Microgateway default,
$HOME/.edgemicro
. Ada file konfigurasi default bernamadefault.yaml
, lalu satu file untuk setiap lingkungan ORG-ENV-config.yaml
. Upload file ini secara lengkap untuk organisasi dan env.Dokumen referensi
Mengonfigurasi UI Edge agar dapat menggunakan TLS untuk mengakses Edge API