Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Sintomo
L'applicazione client riceve un codice di stato HTTP di 503 Service Unavailable
con
codice di errore messaging.adaptors.http.flow.SslHandshakeFailed
come risposta per l'API
chiamate.
Messaggio di errore
L'applicazione client riceve il seguente codice di risposta:
HTTP/1.1 503 Service Unavailable
Potresti inoltre visualizzare il seguente messaggio di errore:
{ "fault":{ "faultstring":"SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", "detail":{ "errorcode":"messaging.adaptors.http.flow.SslHandshakeFailed" } } }
Possibili cause
Potresti visualizzare il codice di stato 503 Service Unavailable
con il codice di errore
messaging.adaptors.http.flow.SslHandshakeFailed
a causa di un errore durante la connessione a SSL
di handshake tra il processore di messaggi di Apigee Edge e il server di backend per una serie
motivi. Il messaggio di errore nella sezione faultstring
in genere indica
una possibile causa di alto livello che ha causato questo errore.
A seconda del messaggio di errore osservato in faultstring
, devi utilizzare
le tecniche più adatte
per risolvere il problema. Questa guida pratica spiega come risolvere i problemi
questo errore se visualizzi il messaggio di errore SSL Handshake failed
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
in faultstring
.
Questo errore si verifica durante il processo di handshake SSL tra il processore di messaggi di Apigee Edge e il server di backend:
- Se il truststore del processore di messaggi di Apigee Edge:
- .
- Contiene una catena di certificati che non corrisponde all'indirizzo completo del server di backend catena di certificati OPPURE
- Non contiene la catena di certificati completa del server di backend
- Se la catena di certificati presentata dal server di backend:
- Contiene Nome di dominio completo (FQDN) che non corrisponde al nome host specificato in l'endpoint di destinazione
- Contiene una catena di certificati errata o incompleta
Le possibili cause sono le seguenti:
Causa | Descrizione | Le istruzioni di risoluzione dei problemi applicabili a |
---|---|---|
Catena di certificati o certificati non corretti o incompleti nell'archivio di attendibilità del processore di messaggi | Il certificato e/o la relativa catena archiviata nell'archivio di attendibilità del processore di messaggi di Apigee Edge non corrisponde alla catena di certificati del server di backend o non contiene la catena di certificati completa del server di backend. | Utenti Edge di cloud privato e pubblico |
Mancata corrispondenza del nome di dominio completo nel certificato del server di backend e del nome host nell'endpoint di destinazione | Il certificato presentato dal server di backend contiene un nome di dominio completo che non corrisponde al nome host specificato nell'endpoint di destinazione. | Utenti Edge di cloud privato e pubblico |
Catena di certificati o certificati errati o incompleti presentati dal server di backend | La catena di certificati presentata dal server di backend è errata o incompleta. | Utenti Edge di cloud privato e pubblico |
Passaggi diagnostici comuni
Utilizza uno dei seguenti strumenti/tecniche per diagnosticare questo errore:
Monitoraggio delle API
Procedura 1: utilizzo del monitoraggio delle API
Per diagnosticare l'errore utilizzando API Monitoring:
- Accedi alla UI di Apigee Edge come utente con ruolo appropriato.
Passa all'organizzazione in cui vuoi esaminare il problema.
- Vai al menu Analizza > Monitoraggio delle API > Esamina.
- Seleziona il periodo di tempo specifico in cui hai osservato gli errori.
Traccia il codice di errore in base all'ora.
Seleziona una cella che contiene il codice di errore
messaging.adaptors.http.flow.SslHandshakeFailed
come mostrato sotto:Informazioni sul codice di errore
messaging.adaptors.http.flow.SslHandshakeFailed
visualizzato come come mostrato di seguito:Fai clic su Visualizza log ed espandi la riga della richiesta non riuscita.
- Nella finestra Log, tieni presente i seguenti dettagli:
- .
- ID messaggio di richiesta
- Codice di stato:
503
- Origine errore:
target
- Codice di errore:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
Procedura 2: utilizzo dello strumento Trace
Per diagnosticare l'errore utilizzando lo strumento Trace:
- Attiva la sessione di traccia e
- .
- Attendi l'errore
503 Service Unavailable
con il codice di erroremessaging.adaptors.http.flow.SslHandshakeFailed
affinché si verifichino o - Se riesci a riprodurre il problema, esegui la chiamata API per riprodurlo.
503 Service Unavailable
- Attendi l'errore
Assicurati che l'opzione Mostra tutte le informazioni di Flow sia attivata:
- Seleziona una delle richieste non riuscite ed esamina la traccia.
- Naviga attraverso le diverse fasi della traccia e individua dove si è verificato l'errore.
In genere troverai l'errore dopo la fase Flusso di richiesta target avviato come mostrato di seguito:
- Prendi nota dei seguenti valori della traccia:
- errore:
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.cause:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.class:
com.apigee.errors.http.server.ServiceUnavailableException
- Il valore dell'errore
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
indica che l'handshake SSL non è riuscito. poiché il processore di messaggi di Apigee Edge non era in grado di convalidare certificato.
- errore:
- Vai alla fase AX (dati registrati di Analytics) della traccia e fai clic su quest'ultima.
Scorri verso il basso fino alla sezione Intestazioni degli errori dei dettagli della fase e determina il i valori di X-Apigee-fault-code e X-Apigee-fault-source, e X-Apigee-Message-ID come mostrato di seguito:
- Nota i valori di X-Apigee-fault-code, X-Apigee-fault-source, e X-Apigee-Message-ID:
Intestazioni degli errori | Valore |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedura 3: usare i log di accesso NGINX
Per diagnosticare l'errore utilizzando i log di accesso NGINX:
- Se sei un utente Private Cloud, puoi utilizzare i log di accesso NGINX per determinare
le informazioni chiave su HTTP
503 Service Unavailable
. Controlla i log di accesso NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Cerca per vedere se ci sono errori
503
con codice di erroremessaging.adaptors.http.flow.SslHandshakeFailed
per un periodo di tempo specifico (se il problema si è verificato nella precedenti) o se ci sono ancora richieste che non vanno a buon fine con503
. Se trovi errori
503
con la corrispondenza X-Apigee-fault-code il valore dimessaging.adaptors.http.flow.SslHandshakeFailed
, determinare il valore della X-Apigee-fault-source.Esempio di errore 503 nel log di accesso NGINX:
( visualizza immagine ingrandita)
La voce di esempio riportata sopra del log di accesso NGINX ha i seguenti valori per X-Apigee-fault-code e X-Apigee-fault-code
Intestazioni Valore X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailed
X-Apigee-fault-source target
Log del processore di messaggi
Procedura 4: utilizzo dei log del processore di messaggi
- Determinare l'ID messaggio di una delle richieste non riuscite utilizzando API Monitoring, lo strumento Trace o NGINX, come spiegato nella sezione Passaggi di diagnostica comuni.
Cerca l'ID messaggio di richiesta specifico nel log del processore di messaggi (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) Puoi osservare il seguente errore:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeFailed() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:192.168.194.140:55102]@64596 useCount=1 bytesRead=0 bytesWritten=0 age=233ms lastIO=233ms isOpen=true handshake failed, message: General SSLEngine problemL'errore riportato sopra indica che l'handshake SSL non è riuscito tra il processore di messaggi e il server di backend.
Segue un'eccezione con l'analisi dettagliata dello stack, come illustrato di seguito:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onException() : RequestWriteListener.onException(HTTPRequest@1522922c) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ... <snipped> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:203) at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ... <snipped>Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>Tieni presente che l'errore di handshake è dovuto a:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Questo indica che l'handshake SSL non è riuscito perché il processore di messaggi di Apigee Edge era non è in grado di convalidare il certificato del server di backend.
Causa: catena di certificati o certificati errati o incompleti nell'archivio di attendibilità del processore di messaggi
Diagnosi
- Determina il codice di errore e l'origine errore per l'errore osservato utilizzando l'API Log di accesso di Monitoring, dello strumento Trace o di NGINX, come spiegato nella sezione passaggi della diagnostica.
- Se il codice di errore è
messaging.adaptors.http.flow.SslHandshakeFailed
: determinare il messaggio di errore utilizzando uno dei seguenti metodi: - Individua il file error.cause utilizzando lo strumento Trace, come spiegato in Passaggi comuni per la diagnosi
- Trova l'eccezione utilizzando i log del processore di messaggi come spiegato in Passaggi diagnostici comuni
- Trova il valore
faultstring
dalla risposta di errore alla chiamata API, come illustrato in Messaggio di errore - Se il messaggio di errore è
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
, significa che l'handshake SSL poiché il processore di messaggi di Apigee Edge non è riuscito a convalidare certificato.
Puoi eseguire il debug di questo problema in due fasi:
- Fase 1: determina la catena di certificati del server di backend
- Fase 2: confronta la catena di certificati archiviata nell'archivio di attendibilità del processore di messaggi
Fase 1
Fase 1: determina la catena di certificati del server di backend
Utilizza uno dei seguenti metodi per determinare la catena di certificati del server di backend:
openssl
Esegui il comando openssl
sull'host del server di backend
nome come segue:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
Osserva la catena di certificati dall'output del comando precedente:
Esempio di catena di certificati del server di backend dall'output comando Opensl:
Certificate chain 0 s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
tcpdump
- Se sei un utente del cloud pubblico, acquisisci i pacchetti TCP/IP sulla di backend.
- Se sei un utente di Private Cloud, puoi acquisire il protocollo sul server di backend o sul processore di messaggi. Preferibilmente, fotografali sul server di backend man mano che i pacchetti vengono decriptati sul server di backend.
Utilizza quanto segue tcpdump per acquisire pacchetti TCP/IP:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
Analizza i pacchetti TCP/IP utilizzando il comando strumento Wireshark o strumento simile con cui hai familiarità.
Esempio di analisi di Tcpdump
( visualizza immagine ingrandita)
- Pacchetto 43: il processore di messaggi (origine) ha inviato un
Client Hello
messaggio al server di backend (Destinazione). - Pacchetto 44: il server di backend conferma la ricezione del
Messaggio
Client Hello
dal processore di messaggi. - Pacchetto 45: il server di backend invia l'istruzione
Server Hello
insieme al relativo certificato. - Pacchetto 46: il Responsabile del trattamento dei messaggi conferma di aver ricevuto il
Server Hello
e il certificato. Pacchetto 47: il processore di messaggi invia un
FIN, ACK
seguito daRST, ACK
nel pacchetto n. 48.Questo indica che la convalida del certificato del server di backend da parte Errore del processore di messaggi. È perché il processore di messaggi non ha qualsiasi certificato che corrisponda a quello del server di backend o che non sia attendibile il certificato del server di backend con i certificati disponibili (del responsabile dei messaggi).
Puoi tornare indietro ed esaminare il pacchetto 45 e determinare il certificato catena inviata dal server di backend
- In questo esempio, puoi vedere che il server ha inviato un certificato foglia
con
common name (CN) = mocktarget.apigee.net
, seguito da un certificato intermedio conCN= GTS CA 1D4
e certificato radice conCN = GTX Root R1
.
Se hai appurato che la convalida della certificazione del server non è andata a buon fine: vai alla Fase 2: confronta il certificato del server di backend e certificati archiviati nell'archivio di attendibilità del processore di messaggi.
- Pacchetto 43: il processore di messaggi (origine) ha inviato un
Fase 2
Fase 2: confronta il certificato e i certificati del server di backend archiviati nella Truststore del processore di messaggi
- Determina la catena di certificati del server di backend.
- Determinare il certificato archiviato nell'archivio di attendibilità del processore di messaggi utilizzando
segui questi passaggi:
Recupera il nome di riferimento del truststore dall'elemento
TrustStore
nella sezioneSSLInfo
diTargetEndpoint
.Diamo un'occhiata a una sezione
SSLInfo
di esempio in unTargetEndpoint
. configurazione:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore> ref://myCompanyTrustStoreRef </TrustStore> </SSLInfo> </HTTPTargetConnection> ... </TargetEndpoint>
- Nell'esempio precedente, il nome di riferimento
TrustStore
èmyCompanyTruststoreRef
. Nella UI di Edge, seleziona Ambienti > Riferimenti. Prendi nota del nome nella Colonna Riferimento per il riferimento specifico dell'archivio attendibilità. Questo sarà il tuo nome archivio attendibilità.
Nell'esempio precedente il nome dell'archivio attendibili è:
myCompanyTruststoreRef:
myCompanyTruststore
Recuperare i certificati archiviati nell'archivio attendibilità (determinati nel passaggio precedente) utilizzando le API seguenti:
Recupero di tutti i certificati per un archivio chiavi o un archivio attendibilità Questa API elenca tutte le certificati nell'archivio di attendibilità specifico.
Utente cloud pubblico:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Utente Private Cloud:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Dove:
- ORGANIZATION_NAME è il nome dell'organizzazione
- ENVIRONMENT_NAME è il nome dell'ambiente
- KEYSTORE_NAME è il nome dell'archivio chiavi
- $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0
- Le opzioni
curl
utilizzate in questo esempio sono descritte in Utilizzare curl
Esempio di output:
I certificati dell'archivio di attendibilità
myCompanyTruststore
di esempio sono:[ "serverCert" ]
-
Recupera i dettagli della certificazione per un certificato specifico da un archivio chiavi o un archivio attendibilità.
Questa API restituisce le informazioni su un certificato specifico in
archivio attendibilità.
Utente cloud pubblico:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Utente Private Cloud
curl -v -X GET http://MANAGEMENT_HOST:PORT_#>/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Dove:
- ORGANIZATION_NAME è il nome dell'organizzazione
- ENVIRONMENT_NAME è il nome dell'ambiente
- KEYSTORE_NAME è il nome dell'archivio chiavi
- CERT_NAME è il nome del certificato
- $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0
- Le opzioni
curl
utilizzate in questo esempio sono descritte in Utilizzare curl
Output di esempio
Dettagli di
serverCert
mostrano l'oggetto e l'emittente come segue:Certificato Fogliolina/Entità:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Certificato intermedio:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
Verifica che il certificato del server effettivo ottenuto nel passaggio 1 e il certificato archiviati in truststore ottenuti nel passaggio 3. Se non corrispondono, causa del problema.
Nell'esempio mostrato sopra, esaminiamo un certificato alla volta:
- Certificato Fogliolina:
Dal server di backend:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
Dall'archivio di attendibilità (client) del processore di messaggi:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Il certificato foglia archiviato nel truststore corrisponde a quello del backend server web.
- Certificato intermedio:
Dal server di backend:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
Dall'archivio di attendibilità (client) del processore di messaggi:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
Il certificato intermedio archiviato nel truststore corrisponde a quello del di backend.
- Certificato radice:
Dal server di backend:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
Il certificato radice è completamente mancante nel riquadro archivio attendibilità.
Poiché il certificato radice non è presente nell'archivio attendibili, la classe Il processore di messaggi genera la seguente eccezione:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
e restituisce
503 Service Unavailable
con il codice di erroremessaging.adaptors.http.flow.SslHandshakeFailed
al cliente diverse applicazioni.
- Certificato Fogliolina:
Risoluzione
- Assicurati di disporre della catena di certificati corretta e completa del server di backend.
- Se sei un utente del cloud pubblico, segui le istruzioni in . Aggiorna un certificato TLS per il cloud per aggiornarlo alla versione di Apigee Edge Truststore del processore di messaggi.
- Se sei un utente di Private Cloud, segui le istruzioni in . Aggiorna un certificato TLS per il cloud privato per aggiornarlo Truststore del processore di messaggi di Apigee Edge.
Causa: mancata corrispondenza del nome di dominio completo nel certificato del server di backend e del nome host nell'endpoint di destinazione
Se il server di backend presenta una catena di certificati che contiene un nome di dominio completo, che non corrisponde al
host specificato nell'endpoint di destinazione, il processo di messaggistica di Apigee Edge restituisce l'errore
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
.
Diagnosi
- Esamina l'endpoint di destinazione specifico nel proxy API in cui viene osservato
e prendi nota del nome host del server di backend:
Esempio di TargetEndpoint:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
Nell'esempio precedente, il nome host del server di backend è
backend.company.com
. Determina il nome di dominio completo nel certificato del server di backend utilizzando il
openssl
come mostrato di seguito:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
Ad esempio:
openssl s_client -connect backend.company.com:443
Esamina la sezione
Certificate chain
e nota che il nome di dominio completo specificato è parte della CN nell'oggetto del certificato foglia.Certificate chain 0 s:/
CN=backend.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1Nell'esempio precedente, il nome di dominio completo del server di backend è
backend.apigee.net
.- Se il nome host del server di backend ottenuto nel passaggio 1 e il nome di dominio completo ottenuto non corrispondono, questa è la causa dell'errore.
- Nell'esempio discusso sopra, il nome host nell'endpoint di destinazione è
backend.company.com
. Tuttavia, il nome FQDN nel certificato del server di backend èbackend.apigee.net
. Poiché non corrispondono, ricevi questo errore.
Risoluzione
Puoi risolvere il problema utilizzando uno dei seguenti metodi:
FQDN corretto
Aggiorna l'archivio chiavi del server di backend con il nome di dominio completo corretto e un certificato valido e completo :
- Se non disponi di un certificato del server di backend con il nome di dominio completo corretto, quindi procurati il certificato appropriato a un'autorità di certificazione appropriata.
Conferma di avere una catena di certificati valida e completa del server di backend.
- Quando disponi di una catena di certificati valida e completa con il nome di dominio completo corretto del server di backend nel certificato di foglia o entità identico al nome host specificato nell'endpoint di destinazione, aggiorna l'archivio chiavi del backend con completa la catena di certificati.
Server di backend corretto
Aggiorna l'endpoint di destinazione con il nome host del server di backend corretto:
- Se il nome host è stato specificato in modo errato nell'endpoint di destinazione, aggiorna il valore dell'endpoint di destinazione in modo che il nome host sia corretto e che corrisponda al nome di dominio completo nel backend con il certificato del server.
Salva le modifiche apportate al proxy API.
Nell'esempio discusso sopra, se il nome host del server di backend non era corretto specificato, puoi correggerlo utilizzando il nome di dominio completo del certificato del server di backend, che è
backend.apigee.net
, come segue:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
Causa: catena di certificati o certificati errati o incompleti presentati dal server di backend
Diagnosi
- Esegui il comando
openssl
per ottenere la catena di certificati del server di backend rispetto al nome host del server di backend, nel seguente modo:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Osserva il
Certificate chain
dell'output del comando precedente.Esempio di catena di certificati del server di backend dall'output comando Opensl:
Certificate chain 0 s:/
CN=mocktarget.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 - Verifica di disporre della catena di certificati corretta e completa, come spiegato in Convalida della catena di certificati.
Se non hai una catena di certificati valida e completa per il server di backend, questa è la causa del problema.
Nella catena di certificati del server di backend di esempio mostrata sopra, il certificato radice è mancante. Di conseguenza, ricevi questo errore.
Risoluzione
Aggiorna l'archivio chiavi del server di backend con una catena di certificati valida e completa:
Verifica di avere una catena di certificati del server di backend valida e completa.
- Aggiorna la catena di certificati valida e completa nell'archivio chiavi del server di backend.
Se il problema persiste, vai all'indirizzo Raccogliere dati diagnostici.
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni diagnostiche e contatta l'assistenza Apigee Edge:
- Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
- .
- Nome organizzazione
- Nome ambiente
- Nome proxy API
- Completa il comando
curl
per riprodurre l'errore - File di traccia che mostra l'errore
Output del comando
openssl
:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- Pacchetti TCP/IP acquisiti sul server di backend
- Se sei un utente di Private Cloud, fornisci le seguenti informazioni:
- .
- Messaggio di errore completo osservato
- Bundle proxy API
- File di traccia che mostra l'errore
- Log del processore di messaggi
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Output del comando
openssl
:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- Pacchetti TCP/IP acquisiti sul server di backend o sul processore di messaggi.
- Output di Recupera tutti i certificati per un'API keystore o truststore, oltre ai dettagli di ogni certificato ottenuto utilizzando . Ottieni dettagli della certificazione da un archivio chiavi o un'API Truststore.
Riferimenti
- Certificato Catena di attendibilità
- Comando OpenSSL