502 Hatalı Ağ Geçidi - Zincirde kendinden imzalı sertifika

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:

  1. 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
    
  2. 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

  1. Güvenilir bir sertifika yetkilisi (CA) tarafından imzalanmış uygun bir TLS sertifikası almak için hedef sunucunun sahibi olan ekiple birlikte çalışın.
  2. 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

    1. Docker kullanıyorsanız Node.js tarafından güvenilmeyen bir CA kullanma başlıklı makaleyi inceleyin.
    2. 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

    1. 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.
    2. 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

  1. Bu durumda, Yönetim Sunucusu (management.apigee-dev.net) kendinden imzalı bir TLS sertifikası döndürüyor olabilir.
  2. Sertifikayı Apigee Edge sistem yöneticiniz paylaşmış ve bir kopyası da almış olabilir.
  3. 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
    
  4. Yönetim Sunucusu'nun kendinden imzalı bir sertifikası varsa sorunun nedeni budur.

Çözünürlük

  1. Güvenilir bir sertifika yetkilisi (CA) tarafından imzalanmış uygun bir TLS sertifikası almak için hedef sunucunun sahibi olan ekiple birlikte çalışın.
  2. Bu mümkün değilse Edge Microgateway'de kendinden imzalı sertifikalara izin vermek için aşağıdakileri yapın.

  3. Edge Microgateway'in tüm sertifikalara güvenmesine izin vermek için bir sistem özelliği ayarlayın.
  4. Docker kullanıyorsanız Node.js tarafından güvenilmeyen bir CA kullanma başlıklı makaleyi inceleyin.
  5. 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 ana config.yaml dosyasında (logging > dir parameter) geçersiz kılınabilir. Günlük dosyalarını Apigee Edge Support'a sağlamadan önce log > level değerini info 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. Önce default.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