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:
- 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
-
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ść
- 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.
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
- Jeśli używasz Dockera, zapoznaj się z artykułem Używanie urzędu certyfikacji, który nie jest zaufany przez Node.js
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
- 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.
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
- W tym przypadku serwer zarządzania
(
management.apigee-dev.net
) może zwracać samodzielnie podpisany certyfikat TLS. - Najprawdopodobniej administrator systemu Apigee Edge dostarczył certyfikat i mamy jego kopię.
- 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
- Jeśli serwer zarządzania ma certyfikat podpisany samodzielnie, to właśnie jest przyczyną tego problemu Google Cloud.
Rozdzielczość
- 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.
Jeśli nie jest to możliwe, wykonaj poniższe czynności, aby umożliwić certyfikatów w Edge Microgateway.
- Ustaw właściwość systemową, aby zezwolić Edge Microgateway na zaufane wszystkie certyfikaty.
- Jeśli używasz Dockera, zapoznaj się z artykułem Używanie urzędu certyfikacji, który nie jest zaufany przez Node.js.
- 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 plikconfig.yaml
(logging > dir parameter
). Jest zalecamy zmianęlog > level
nainfo
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 nazwiedefault.yaml
, a następnie po jednym dla każdego środowiska ORG–ENV–config.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