Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, Edge Microgateway'deki API çağrılarına yanıt olarak Bad Gateway
mesajıyla birlikte 502
HTTP yanıt kodunu alır.
Alternatif olarak, yönetici
edgemicro configure
komutunu çalıştırırken bir self signed certificate in certificate
chain
hatası alır.
Hata mesajı
İstemci aşağıdaki yanıt mesajını görür:
HTTP/1.1 502 Bad Gateway
Hata yanıtlarına dair yaygın iki örneği aşağıda görebilirsiniz:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
Alternatif olarak bu hata edgemicro configure
çalıştırılırken de oluşabilir:
{ 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' }
Olası nedenler
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
Hedef sunucu kendinden imzalı bir sertifika sunuyor | Edge Microgateway, hedef sunucunun sertifikasını doğrular ve güvenilir değilse bir çalışma zamanı hatası verir. | Edge Herkese Açık ve Özel Bulut kullanıcıları |
Apigee Edge Management Server kendinden imzalı bir sertifika kullanır | Edge Mikro Ağ Geçidi ilk kez yapılandırılırken önyükleme yapmak için TLS üzerinden Apigee Edge'e bağlanacak. Edge kendinden imzalı bir sertifika sunarsa bu işlem başarısız olur. | Edge Private Cloud kullanıcıları |
Neden: Hedef sunucu kendinden imzalı bir sertifika sunuyor
Güney sınır bağlantısında hedef sunucu tarafından kendinden imzalı bir sertifika sunulursa Edge Microgateway kendinden imzalı sertifikalara güvenmediği için varsayılan olarak bu hatayı verir.
Teşhis
Günlüklerde aşağıdaki hatayı görebilirsiniz (/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
hata kodu, Edge Microgateway'in büyük olasılıkla hedef sunucudan kendinden imzalı bir sertifika aldığını belirtir. Bunu onaylamak için aşağıdaki adımları uygulayın:
- Hedef sunucunun sertifika zincirini doğrulamak için aşağıdaki
openssl
komutunu çalıştırın:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Hedef sunucunun sertifika zinciri gerçekten kendinden imzalıysa sorunun nedeni budur.
Aşağıdaki örnekte, hedef sunucunun kendinden imzalı bir sertifika sunduğuna dikkat edin:
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
Çözünürlük
- Güvenilir bir sertifika yetkilisi (CA) tarafından imzalanmış uygun bir TLS sertifikası almak için hedef sunucunun sahibi olan ekiple birlikte çalışın.
Bu mümkün değilse Edge Microgateway'de kendinden imzalı sertifikalara izin vermek için aşağıdaki seçeneklerden birini değerlendirin.
1. Seçenek: Edge Microgateway'in tüm sertifikalara güvenmesine izin vermek için bir sistem özelliği ayarlayın
- Docker kullanıyorsanız Node.js tarafından güvenilmeyen bir CA kullanma başlıklı makaleyi inceleyin.
Aksi takdirde, kök CA dosyasına işaret eden
NODE_EXTRA_CA_CERTS
adlı bir ortam değişkenini dışa aktarın.Bu, resmi Node.js web sitesinde belgelenmiştir.
2. Seçenek: Edge Microgateway YAML yapılandırma dosyasını hedef sunucu için söz konusu sertifikaya güvenecek şekilde yapılandırın
- Hedef sunucunun sertifikasının (veya zincirinin) PEM biçiminde olduğundan emin olun. Diğer sertifika biçimlerini PEM'ye dönüştürmek için Sertifikaları desteklenen biçime dönüştürme bölümündeki talimatları uygulayın.
Sertifika zinciri varsa sertifikaların doğru sırada olduğundan emin olun. Her zaman önce yaprak sertifikası, ardından ara sertifika ve kök sertifika yer almalıdır. Bu konuyla ilgili daha fazla bilgiyi Sertifika zincirini doğrulama bölümünde bulabilirsiniz.
Aşağıdaki örnekte
untrusted-root.badssl.com
için güvenilir CA dosyasını yapılandırdık.edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
Bunu yapılandırmayla ilgili talimatlar, Edge Microgateway Module - 1 yönlü ve 2 yönlü Güneye giden TLS'yi yapılandırma videosunda da bulunmaktadır. Daha fazla bilgi için Edge Mikro Ağ Geçidi sunucusunda SSL'yi yapılandırma başlıklı makaleye bakın.
Sorun devam ederse Teşhis bilgileri toplanmalı bölümüne gidin.
Neden: Apigee Edge Management Server kendinden imzalı bir sertifika kullanıyor
Edge Microgateway ilk kez ayarlandığında, çalıştırmanız gereken komutlardan biri edgemicro configure
veya edgemicro private configure
olur. Bu komut kümeyi önyükler ve gerekli bilgileri indirmek için Apigee Edge ile iletişime geçer.
Edge Private Cloud için Yönetim Sunucusu URL'si -m
bağımsız değişkeni tarafından belirlenir.
Yönetim Sunucusu için TLS'yi etkinleştirdiyseniz Edge Microgateway, Yönetim Sunucusu tarafından sunulan sertifikayı doğrulamaya çalışır.
Edge Private Cloud için örnek edgemicro configure
komutu aşağıdaki gibidir:
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
Yönetim Sunucusu kendinden imzalı bir sertifikayla yapılandırılmışsa konsol çıkışında aşağıdaki hatayı alırsınız.
{ 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' }
Teşhis
- Bu durumda, Yönetim Sunucusu (
management.apigee-dev.net
) kendinden imzalı bir TLS sertifikası döndürüyor olabilir. - Sertifikayı Apigee Edge sistem yöneticiniz paylaşmış ve bir kopyası da almış olabilir.
- Aksi takdirde, sertifika hakkında bilgi almak için aşağıdaki komutu çalıştırın:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- Yönetim Sunucusu'nun kendinden imzalı bir sertifikası varsa sorunun nedeni budur.
Çözünürlük
- Güvenilir bir sertifika yetkilisi (CA) tarafından imzalanmış uygun bir TLS sertifikası almak için hedef sunucunun sahibi olan ekiple birlikte çalışın.
Bu mümkün değilse Edge Microgateway'de kendinden imzalı sertifikalara izin vermek için aşağıdakileri yapın.
- Edge Microgateway'in tüm sertifikalara güvenmesine izin vermek için bir sistem özelliği ayarlayın.
- Docker kullanıyorsanız Node.js tarafından güvenilmeyen bir CA kullanma başlıklı makaleyi inceleyin.
- Aksi takdirde, kök CA dosyasına işaret eden
NODE_EXTRA_CA_CERTS
adlı bir ortam değişkenini dışa aktarın.Bu, resmi Node.js web sitesinde belgelenmiştir.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki teşhis bilgilerini toplayıp Apigee Edge Destek Ekibi ile iletişime geçin:
- Günlük dosyaları: Varsayılan klasör
/var/tmp
olmasına rağmen anaconfig.yaml
dosyasında (logging > dir parameter
) geçersiz kılınabilir. Günlük dosyalarını Apigee Edge Support'a sağlamadan öncelog > level
değeriniinfo
olarak değiştirmeniz önerilir. - Yapılandırma dosyası: Edge Microgateway'in ana yapılandırması, varsayılan Edge Microgateway klasöründeki
$HOME/.edgemicro
adlı YAML dosyasında bulunur. Öncedefault.yaml
adında bir varsayılan yapılandırma dosyası, ardından ORG-ENV-config.yaml
her bir ortam için birer yapılandırma dosyası vardır. Etkilenen kuruluş ve ortam için bu dosyanın tamamını yükleyin.Referans belgeleri
Edge API'ye erişmek için TLS'yi kullanmak üzere Edge kullanıcı arayüzünü yapılandırma