Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Sintomo
L'applicazione client riceve un codice di risposta HTTP 502
con il messaggio
Bad Gateway
come risposta per le chiamate API in Edge Microgateway.
In alternativa, l'amministratore riceverà un errore self signed certificate in certificate
chain
quando esegue
edgemicro configure
.
Messaggio di errore
Il client vedrà il seguente messaggio di risposta:
HTTP/1.1 502 Bad Gateway
Due esempi comuni di risposte di errore sono:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
In alternativa, questo errore può verificarsi durante l'esecuzione di 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' }
Possibili cause
Causa | Descrizione | Le istruzioni di risoluzione dei problemi applicabili a |
---|---|---|
Il server di destinazione presenta un certificato autofirmato | Edge Microgateway verificherà il certificato del server di destinazione e se non è attendibile genererà un errore di runtime. | Utenti perimetrali di cloud pubblici e privati |
Apigee Edge Management Server utilizza un certificato autofirmato | Quando si configura Edge Microgateway per la prima volta, si connetterà ad Apigee Edge TLS in bootstrap. Se Edge presenta un certificato autofirmato, l'operazione non riuscirà. | Utenti Edge Private Cloud |
Causa: il server di destinazione presenta un certificato autofirmato
Se certificato autofirmato viene presentato dal server di destinazione . verso sud, Edge Microgateway genererà, per impostazione predefinita, questo errore non considera attendibili i certificati autofirmati.
Diagnosi
Potresti osservare il seguente errore nei log (/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][]
Il codice di errore SELF_SIGNED_CERT_IN_CHAIN
indica che il gateway Edge Microgateway ha
molto probabilmente ha ricevuto un certificato autofirmato dal server di destinazione. Per verificarlo, esegui
segui questi passaggi:
- Esegui questo comando
openssl
per verificare la sicurezza del server catena di certificati:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Se la catena di certificati del server di destinazione è effettivamente autofirmata, questo è il motivo risolvere il problema.
Nell'esempio seguente, nota che il server di destinazione presenta un certificato autofirmato:
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
Risoluzione
- Collabora con il team proprietario del server di destinazione per ottenere un certificato TLS appropriato firmato da un un'autorità di certificazione (CA) attendibile.
Se questo non è possibile, prendi in considerazione una delle seguenti opzioni per consentire la firma in Edge Microgateway.
Opzione 1: imposta una proprietà di sistema per consentire a Edge Microgateway di considerare attendibili tutti certificati
- Se utilizzi Docker, consulta . Utilizzo di una CA non considerata attendibile da Node.js
In caso contrario, esporta una variabile di ambiente denominata
NODE_EXTRA_CA_CERTS
che rimanda al file CA radice.Questo documento è documentato sul Node.js sito web.
Opzione 2: configura il file di configurazione YAML di Edge Microgateway in modo che consideri attendibile certificato per quel server di destinazione
- Assicurati di avere il certificato (o la catena) del server di destinazione in formato PEM. A convertire altri formati di certificato in PEM, segui le istruzioni in Conversione dei certificati nel formato supportato.
Se esiste una catena di certificati, assicurati che siano corretti ordine. Il certificato foglia deve essere sempre il primo, seguito dall'intermedio e quindi il certificato radice. Trovi maggiori spiegazioni al riguardo nella Convalida della catena di certificati in corso...
Nell'esempio seguente, abbiamo configurato il file CA attendibile per
untrusted-root.badssl.com
.edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
Le istruzioni per la configurazione sono descritte anche nel Modulo Edge Microgateway - Video sulla configurazione del TLS unidirezionale e bidirezionale relativo al TLS. Consulta Configura SSL sul server Edge Microgateway per ulteriori informazioni.
Se il problema persiste, vai a Devi raccogliere dati diagnostici.
Causa: Apigee Edge Management Server utilizza un certificato autofirmato
Quando Edge Microgateway viene configurato per la prima volta, uno dei comandi che dovrai eseguire
è edgemicro configure
o edgemicro private configure
. Questo comando
avvia il bootstrap del cluster e contatterà Apigee Edge per scaricare le informazioni richieste.
Per Edge Private Cloud, l'URL del server di gestione è determinato dall'argomento -m
.
Se hai abilitato TLS per il server di gestione, Edge Microgateway tenterà di verificare
il certificato presentato dal server di gestione.
Ecco un esempio di comando edgemicro configure
per 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
Se il server di gestione è configurato con un certificato autofirmato, verrà visualizzato il l'errore seguente nell'output della console.
{ 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' }
Diagnosi
- In questo caso, il server di gestione
(
management.apigee-dev.net
) potrebbe restituire un certificato TLS autofirmato. - È probabile che l'amministratore di sistema Apigee Edge abbia fornito il certificato e ne ha una copia.
- In caso contrario, esegui questo comando per ottenere informazioni sul certificato:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- Se il server di gestione ha un certificato autofirmato, è questo il motivo problema.
Risoluzione
- Collabora con il team proprietario del server di destinazione per ottenere un certificato TLS appropriato firmato da un un'autorità di certificazione (CA) attendibile.
Se non è possibile, procedi nel seguente modo per consentire la firma in Edge Microgateway.
- Imposta una proprietà di sistema per consentire a Edge Microgateway di considerare attendibili tutti i certificati.
- Se utilizzi Docker, consulta . Utilizzo di una CA non considerata attendibile da Node.js.
- In caso contrario, esporta una variabile di ambiente denominata
NODE_EXTRA_CA_CERTS
che rimanda al file CA radice.Si tratta documentate sul Sito web Node.js.
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni diagnostiche e contattare l'assistenza Apigee Edge:
- File di log: la cartella predefinita è
/var/tmp
, ma potrebbe essere ignorata in il fileconfig.yaml
principale (logging > dir parameter
). È ti consigliamo di modificarelog > level
ininfo
prima di fornire il di log all'Assistenza Apigee Edge. - File di configurazione: la configurazione principale di Edge Microgateway risiede nel file YAML
nella cartella predefinita di Edge Microgateway,
$HOME/.edgemicro
. C'è un il file di configurazione predefinito denominatodefault.yaml
e uno per ogni ambiente ORG-ENV-config.yaml
. Carica questo file per l'organizzazione e l'ambiente colpiti.Documenti di riferimento
Configura la UI Edge per l'utilizzo di TLS per accedere all'API Edge