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

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması şu mesajla birlikte 502 HTTP yanıt kodunu alıyor Edge Microgateway'deki API çağrılarına yanıt olarak Bad Gateway.

Alternatif olarak, self signed certificate in certificate chain edgemicro configure komutunu kullanın.

Hata mesajı

İstemci aşağıdaki yanıt mesajını görür:

HTTP/1.1 502 Bad Gateway

Hata yanıtlarının yaygın iki örneği şunlardır:

{"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, edgemicro configure çalıştırılırken bu hata 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ı ve güvenilir değilse bunu doğrular çalışma zamanı hatası oluşur. Edge Herkese Açık ve Private Cloud kullanıcıları
Apigee Edge Yönetim Sunucusu kendinden imzalı bir sertifika kullanır Edge Microgateway'i ilk kez yapılandırırken Apigee Edge'e Önyükleme için TLS. 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

kendinden imzalı sertifika, Güneye giden bağlantısı kurulduğunda, Edge Microgateway, varsayılan olarak bu hatayı kendinden imzalı sertifikalara güvenmez.

Teşhis

Günlüklerde şu 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 Mikro Ağ Geçidi'nin hedef sunucudan kendinden imzalı bir sertifika almış olma ihtimali yüksektir. Bunu doğrulamak için şu işlemi uygulayın: şu adımları uygulayın:

  1. Hedef sunucunun adresini doğrulamak için aşağıdaki openssl komutunu çalıştırın sertifika zinciri:
    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 düşünmesi gerekir.

    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. Sunucunun imzaladığı uygun bir TLS sertifikası oluşturmak için, hedef sunucunun sahibi olan ekiple güvenilir sertifika yetkilisidir (CA).
  2. Bu mümkün değilse kendinden imzalı olanlara izin vermek için aşağıdaki seçeneklerden birini değerlendirin sertifikalarına ekleyebilirsiniz.

    1. Seçenek: Edge Microgateway'in tüm cihazlara güvenmesine izin vermek için bir sistem özelliği ayarlayın sertifikalar

    1. Docker kullanıyorsanız Node.js'nin güvenmediği bir CA kullanma
    2. Aksi takdirde, NODE_EXTRA_CA_CERTS adlı bir ortam değişkenini dışa aktarın. oturum açın.

      Bu, resmi bankada Node.js web sitesi.

    ziyaret edin.

    2. seçenek: Edge Microgateway YAML yapılandırma dosyasını bu spesifik sertifikasının

    1. Hedef sunucunun sertifikasının (veya zincirinin) PEM biçiminde olduğundan emin olun. Alıcı: diğer sertifika biçimlerini PEM'e dönüştürmek için şu adresteki talimatları uygulayın: Sertifikaları desteklenen biçime dönüştürme.
    2. Sertifika zinciri varsa sertifikaların doğru konumda olduğundan emin olun sipariş. Yaprak sertifikası her zaman ilk sırada ve ardından ara sertifika gelmelidir sertifika, ardından kök sertifika. Bu konuyla ilgili daha fazla açıklama için Sertifika zinciri doğrulanıyor.

      Aşağıdaki örnekte, güvenilir CA dosyasını şunun için yapılandırdık: untrusted-root.badssl.com

      edgemicro:
      ...
      targets:
        - host: 'untrusted-root.badssl.com'
          ssl:
            client
              ca: /opt/apigee/certs/untrusted-root.pem
      

    Bunu yapılandırmayla ilgili talimatlar şurada da ele alınmıştır: Edge Mikro Ağ Geçidi Modülü - Tek yönlü ve 2 yönlü Güneye Giden TLS videosunu yapılandırın. Referans Daha fazla bilgi için Edge Microgateway sunucusunda SSL'i yapılandırma başlıklı makaleyi inceleyin.

Sorun devam ederse şu adrese gidin: Teşhis bilgileri toplanmalıdır.

Neden: Apigee Edge Management Server kendinden imzalı bir sertifika kullanır

Edge Mikro Ağ Geçidi ilk kez ayarlandığında, çalıştırmanız gereken komutlardan biri edgemicro configure veya edgemicro private configure. Bu komut, önyükleme yapar ve gerekli bilgileri indirmek için Apigee Edge ile iletişime geçer.

Uç 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 sertifika.

Aşağıda, Edge Private Cloud için örnek bir edgemicro configure komutu verilmiştir:

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 aşağıdaki hata mesajını görüyorsunuz.

{ 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. Apigee Edge sistem yöneticiniz sertifikayı sağlamış olabilir ve bir kopyası vardır.
  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 kendinden imzalı bir sertifikaya sahipse .

Çözünürlük

  1. Sunucunun imzaladığı uygun bir TLS sertifikası oluşturmak için, hedef sunucunun sahibi olan ekiple güvenilir sertifika yetkilisidir (CA).
  2. Bu mümkün değilse kendinden imzalı olanlara izin vermek için aşağıdaki adımları uygulayın sertifikalarına ekleyebilirsiniz.

  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'nin güvenmediği bir CA kullanmak.
  5. Aksi takdirde, NODE_EXTRA_CA_CERTS adlı bir ortam değişkenini dışa aktarın. işaret eder.Bu işlem, resmi belgelerde Node.js web sitesini ziyaret edin.

Teşhis bilgileri toplanmalıdır

Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki Apigee Edge Destek Ekibi ile iletişime geçin:

  • Günlük dosyaları: Varsayılan klasör /var/tmp şeklindedir ancak şurada geçersiz kılınabilir: config.yaml ana dosyası (logging > dir parameter). Evet değerini sağlamadan önce log > level değerini info olarak değiştirmeniz önerilir. günlük dosyalarını Apigee Edge Destek'e kaydedin.
  • Yapılandırma dosyası: Edge Microgateway'in ana yapılandırması, YAML'de bulunur dosyasını varsayılan Edge Microgateway klasöründe bulabilirsiniz ($HOME/.edgemicro). Bir default.yaml adlı varsayılan yapılandırma dosyası ve ardından her ortam için bir tane ORG-ENV-config.yaml. Bu dosyayı yükle tamamı için 100 TL'lik bir değer girilmelidir.

    Referans belgeler

    Edge API'ye erişmek için TLS'yi kullanacak şekilde Edge kullanıcı arayüzünü yapılandırma