502 Bad Gateway – certyfikat podpisany samodzielnie w sieci

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Krótki opis problemu

Aplikacja kliencka otrzymuje kod odpowiedzi HTTP 502 z komunikatem Bad Gateway jako odpowiedź na wywołania interfejsu API w Edge Microgateway.

Zamiast tego administrator otrzyma błąd self signed certificate in certificate chain podczas uruchamiania edgemicro configure.

Komunikat o błędzie

Klient zobaczy następujący komunikat odpowiedzi:

HTTP/1.1 502 Bad Gateway

2 typowe przykłady odpowiedzi na błędy to:

{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}

Ten błąd może też wystąpić podczas uruchamiania kodu 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' }

Możliwe przyczyny

Przyczyna Opis Instrukcje rozwiązywania problemów dotyczące
Serwer docelowy przedstawia samodzielnie podpisany certyfikat Edge Microgateway zweryfikuje certyfikat serwera docelowego, a jeśli nie jest zaufany spowoduje zgłoszenie błędu podczas działania. Użytkownicy chmury publicznej i prywatnej Edge
Serwer zarządzania brzegiem Apigee używa samodzielnie podpisanego certyfikatu Podczas pierwszej konfiguracji Edge Microgateway urządzenie połączy się z Apigee Edge TLS do wczytywania. Jeśli Edge przedstawi samodzielnie podpisany certyfikat, nie powiedzie się. Użytkownicy Edge Private Cloud

Przyczyna: serwer docelowy przedstawia certyfikat podpisany samodzielnie

Jeśli samodzielnie podpisany certyfikat jest przedstawiany przez serwer docelowy na stronie w kierunku południowym, to Edge Microgateway wyświetli domyślnie ten błąd, ponieważ nie ufa certyfikatom podpisanym samodzielnie.

Diagnostyka

W dziennikach możesz zobaczyć ten błąd (/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][]

Kod błędu SELF_SIGNED_CERT_IN_CHAIN oznacza, że Edge Microgateway najprawdopodobniej odebrał samodzielnie podpisany certyfikat z serwera docelowego. Aby to potwierdzić, wykonaj te kroki:

  1. Uruchom to polecenie openssl, aby sprawdzić serwer docelowy łańcuch certyfikatów:
    echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
    
  2. Jeśli łańcuch certyfikatów serwera docelowego jest faktycznie podpisany samodzielnie, jest to przyczyną i rozpoznają problem.

    W poniższym przykładzie zwróć uwagę, że serwer docelowy przedstawia certyfikat podpisany samodzielnie:

    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
    

Rozdzielczość

  1. Współpracuj z zespołem będącym właścicielem serwera docelowego w celu uzyskania odpowiedniego certyfikatu TLS podpisanego przez zaufanego urzędu certyfikacji.
  2. Jeśli nie jest to możliwe, rozważ zastosowanie jednej z poniższych opcji, aby umożliwić certyfikatów w Edge Microgateway.

    Opcja 1. Ustaw właściwość systemową tak, aby Edge Microgateway uznała wszystkie za zaufane certyfikaty

    1. Jeśli używasz Dockera, zapoznaj się z artykułem Używanie urzędu certyfikacji, który nie jest zaufany przez Node.js
    2. W przeciwnym razie wyeksportuj zmienną środowiskową o nazwie NODE_EXTRA_CA_CERTS, wskazujący główny plik CA.

      Jest to udokumentowane na oficjalnym Node.js witryny.

    .

    Opcja 2. Skonfiguruj plik konfiguracyjny YAML Edge Microgateway, aby uznać go za zaufany dla danego serwera docelowego

    1. Sprawdź, czy masz certyfikat (lub łańcuch) serwera docelowego w formacie PEM. Do skonwertowania innych formatów certyfikatów do formatu PEM, postępuj zgodnie z instrukcjami podanymi w Konwertuję certyfikaty na obsługiwany format.
    2. Jeśli istnieje łańcuch certyfikatów, sprawdź, czy certyfikaty znajdują się w odpowiednim zamówienie. Certyfikat liścia powinien być zawsze pierwszy, a po nim na końcu następuje certyfikat pośredni certyfikat, a potem certyfikat główny. Więcej wyjaśnień na ten temat znajdziesz tutaj: Weryfikuję łańcuch certyfikatów.

      W poniższym przykładzie skonfigurowaliśmy plik zaufanego urzędu certyfikacji dla untrusted-root.badssl.com

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

    Instrukcje dotyczące konfiguracji tej funkcji są również omówione w Edge Microgateway Module – skonfiguruj jednokierunkową i dwukierunkową transmisję TLS w kierunku południowym. Więcej informacji: Konfigurowanie SSL na serwerze Edge Microgateway, aby uzyskać więcej informacji.

Jeśli problem będzie nadal występował, wejdź na Konieczne jest zbieranie informacji diagnostycznych.

Przyczyna: serwer zarządzania brzegiem Apigee używa certyfikatu podpisanego samodzielnie

Przy pierwszej konfiguracji Edge Microgateway jedno z poleceń, które musisz uruchomić. jest edgemicro configure lub edgemicro private configure. To polecenie klaster zostanie wczytany i skontaktuje się z Apigee Edge, aby pobrać wymagane informacje.

W przypadku Edge Private Cloud adres URL serwera zarządzania jest określany przez argument -m. Jeśli masz włączony protokół TLS na serwerze zarządzania, Edge Microgateway podejmie próbę weryfikacji certyfikat przedstawiony przez serwer zarządzania.

Przykładowe polecenie edgemicro configure w przypadku 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

Jeśli serwer zarządzania jest skonfigurowany z certyfikatem podpisanym samodzielnie, otrzymasz w danych wyjściowych konsoli:

{ 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' }

Diagnostyka

  1. W tym przypadku serwer zarządzania (management.apigee-dev.net) może zwracać samodzielnie podpisany certyfikat TLS.
  2. Najprawdopodobniej administrator systemu Apigee Edge dostarczył certyfikat i mamy jego kopię.
  3. W przeciwnym razie uruchom to polecenie, aby uzyskać informacje o certyfikacie:
    echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
    
  4. Jeśli serwer zarządzania ma certyfikat podpisany samodzielnie, to właśnie jest przyczyną tego problemu Google Cloud.

Rozdzielczość

  1. Współpracuj z zespołem będącym właścicielem serwera docelowego w celu uzyskania odpowiedniego certyfikatu TLS podpisanego przez zaufanego urzędu certyfikacji.
  2. Jeśli nie jest to możliwe, wykonaj poniższe czynności, aby umożliwić certyfikatów w Edge Microgateway.

  3. Ustaw właściwość systemową, aby zezwolić Edge Microgateway na zaufane wszystkie certyfikaty.
  4. Jeśli używasz Dockera, zapoznaj się z artykułem Używanie urzędu certyfikacji, który nie jest zaufany przez Node.js.
  5. W przeciwnym razie wyeksportuj zmienną środowiskową o nazwie NODE_EXTRA_CA_CERTS, wskazujący główny plik CA.Jest to udokumentowane na oficjalnym Strona Node.js.

Musi zbierać informacje diagnostyczne

Jeśli po wykonaniu powyższych czynności problem nie ustąpi, zwróć uwagę na informacje diagnostyczne, a następnie skontaktuj się z zespołem pomocy Apigee Edge:

  • Pliki dziennika: domyślny folder to /var/tmp, ale może zostać zastąpiony w główny plik config.yaml (logging > dir parameter). Jest zalecamy zmianę log > level na info przed podaniem plików dziennika do Apigee Edge Support.
  • Plik konfiguracji: główna konfiguracja Edge Microgateway znajduje się w pliku YAML w domyślnym folderze Edge Microgateway, $HOME/.edgemicro. Jest domyślny plik konfiguracyjny o nazwie default.yaml, a następnie po jednym dla każdego środowiska ORGENVconfig.yaml. Prześlij ten plik w całości w organizacji i środowisku, którego dotyczy problem.

    Dokumenty referencyjne

    Skonfiguruj interfejs Edge, aby używać protokołu TLS do uzyskiwania dostępu do interfejsu Edge API