Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Sintomo
Le richieste API Apigee hybrid non vanno a buon fine a causa di errori di connessione TLS. In genere, questi errori sono le reimpostazioni della connessione e gli errori di handshake degli avvisi.
Messaggi di errore
Le chiamate API non vanno a buon fine con TLS, simile all'errore mostrato di seguito o ad altri errori, ma non identici:
* TLSv1.2 (OUT), TLS handshake, Client hello (1): * LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.apis.com:443 * Closing connection 0 curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.apis.com:443
* (304) (OUT), TLS handshake, Client hello (1): * Recv failure: Connection reset by peer * LibreSSL/3.3.6: error:02FFF036:system library:func(4095):Connection reset by peer * Closing connection curl: (35) Recv failure: Connection reset by peer
* (304) (OUT), TLS handshake, Client hello (1): * LibreSSL/3.3.6: error:1404B410:SSL routines:ST_CONNECT:sslv3 alert handshake failure * Closing connection curl: (35) LibreSSL/3.3.6: error:1404B410:SSL routines:ST_CONNECT:sslv3 alert handshake failure
Cause possibili
Causa | Descrizione | Istruzioni per la risoluzione dei problemi applicabili a |
---|---|---|
Secret Kubernetes Ingress mancante | Il secret di Kubernetes per org-envgroup non è presente nello spazio dei nomi di Apigee. |
Apigee hybrid |
Formato del certificato SSL non corretto | Il certificato SSL a cui punta la sezione virtualhosts del file di override è formattato in modo errato. | Apigee hybrid |
Le chiavi SSL non corrispondono al certificato SSL | Le chiavi SSL non corrispondono al certificato SSL puntato nella sezione virtualhosts del file di override. | Apigee hybrid |
Causa: secret di Kubernetes Ingress mancante
Diagnosi
- Analizza i log dei pod
apigee-watcher
nello spazio dei nomi apigee e controlla se sono presenti errori.
Potresti notare un errore come il seguente:
NOT_FOUND: failed to get secret "MY_HYBRID_PROJECT-ENV_GROUP" in namespace "apigee": secrets "MY_HYBRID_PROJECT-ENV_GROUP" not found
dove:MY_HYBRID_PROJECT
è il nome dell'organizzazione ibrida ApigeeENV_GROUP
è il nome del gruppo di ambienti
apigee-watcher
non è riuscito a trovare il secret di Kubernetes per il gruppo di ambienti dell'organizzazione ibrida Apigee sopra menzionato. - Verifica che i secret di Kubernetes siano effettivamente mancanti utilizzando il comando seguente:
kubectl -n apigee get secrets | grep MY_HYBRID_PROJECT-ENV_GROUP
<no output>
Questo esempio non mostra secret di Kubernetes perMY_HYBRID_PROJECT-ENV_GROUP
. Potrebbero essere stati eliminati per errore.
Risoluzione
Puoi ricreare i secret Kubernetes mancanti utilizzando le informazioni sui certificati TLS e sui file delle chiavi presenti nel file overrides.yaml
:
- Esegui questo comando per ricreare i secret mancanti:
apigeectl apply -f overrides/overrides.yaml --settings virtualhosts
L'output del comando precedente dovrebbe mostrare che il secret è stato creato:
secret/MY_HYBRID_PROJECT-ENV_GROUP created
- Verifica che i secret di Kubernetes siano stati creati correttamente utilizzando il comando seguente:
kubectl -n apigee get secrets | grep MY_HYBRID_PROJECT-ENV_GROUP
L'output di questo comando dovrebbe mostrare:
MY_HYBRID_PROJECT-ENV_GROUP Opaque 2 7s
Se il problema persiste, vai a Raccogliere informazioni diagnostiche.
Causa: formato del certificato SSL non corretto
Diagnosi
Innanzitutto, assicurati che il file del certificato sia un file .PEM. Per verificare se il certificato SSL formattato correttamente è caricato in apigee-ingressgateway
, segui questi passaggi.
Se hai configurato TLS unidirezionale utilizzando una coppia di certificato/chiave come descritto in
Opzione 1: coppia chiave/certificato,
esegui:
openssl x509 -in $CERT_FILE -text -noout
Un output di esempio (senza errori):
Certificate: Data: Version: 1 (0x0) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C = US, O = xyz, OU = abc, CN = INTERIM-CN Validity Not Before: Dec 18 09:40:23 2023 GMT Not After : May 1 09:40:23 2025 GMT Subject: C = US, O = xyz, OU = abc, CN = shrey.example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: Trimmed Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption Trimmed
Se hai configurato TLS unidirezionale utilizzando un secret Kubernetes come descritto in Opzione 2: secret di Kubernetes, esegui:
kubectl -n apigee get secret <$SECRET_NAME> -o jsonpath='{.data.cert}'| base64 -d > certfile ; openssl x509 -in certfile -text -noout kubectl -n apigee get secret <$SECRET_NAME> -o jsonpath='{.data.cert}'| base64 -d | openssl x509 -noout -text
Un output di esempio (senza errori):
Certificate: Data: Version: 1 (0x0) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C = US, O = xyz, OU = abc, CN = INTERIM-CN Validity Not Before: Dec 18 09:40:23 2023 GMT Not After : May 1 09:40:23 2025 GMT Subject: C = US, O = xyz, OU = abc, CN = shrey.example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: Trimmed Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption Trimmed
Se l'output del comando precedente è simile a
unable to load certificate 136613728412992:error:0D078095:asn1 encoding routines:asn1_item_embed_d2i:sequence not constructed:../crypto/asn1/tasn_dec.c:321:Type=X509 136613728412992:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:../crypto/pem/pem_oth.c:33:
Per errori come
error loading certificates 8360934016:error:09FFF066:PEM routines:CRYPTO_internal:bad end line
consulta la sezione Risoluzione.
Risoluzione
Gli errori potrebbero variare a seconda dell'errore di formato nel file del certificato. Se necessario, correggi l'errore di certificato.
Se l'output mostra il certificato anziché un errore, considera la Causa: le chiavi SSL non corrispondono al certificato SSL.
Causa: le chiavi SSL non corrispondono al certificato SSL
Diagnosi
Se hai configurato TLS unidirezionale utilizzando la coppia di certificato/chiave come descritto in Opzione 1: coppia chiave/certificato, esegui:
diff -q <(openssl rsa -noout -modulus -in $KEY_FILE ) <(openssl x509 -noout -modulus -in $CERT_FILE)
Un output di esempio (senza errori):
diff -q <(openssl rsa -noout -modulus -in my_server.key ) <(openssl x509 -noout -modulus -in my_server.pem) <No output>
Se hai configurato TLS unidirezionale utilizzando il secret di Kubernetes come descritto in Opzione 2: secret di Kubernetes, esegui:
diff -q <(kubectl -n apigee get secrets $SECRET_NAME -o jsonpath='{.data.key}'| base64 -d | openssl rsa -noout -modulus) <(kubectl -n apigee get secrets $SECRET_NAME -o jsonpath='{.data.cert}'| base64 -d | openssl x509 -noout -modulus)
Un output di esempio (senza errori):
diff -q <(kubectl -n apigee get secrets my-apigee-hybrid-env-grp -o jsonpath='{.data.key}'| base64 -d | openssl rsa -noout -modulus) <(kubectl -n apigee get secrets my-apigee-hybrid-env-grp -o jsonpath='{.data.cert}'| base64 -d | openssl x509 -noout -modulus) <No output>
Se l'output del comando precedente mostra un errore come:
unable to load Private Key 133504499987776:error:09091064:PEM routines:PEM_read_bio_ex:bad base64 decode:../crypto/pem/pem_lib.c:949: Files /dev/fd/63 and /dev/fd/62 differ
le chiavi SSL non corrispondono al certificato SSL e consulta la sezione Risoluzione.
Risoluzione
Assicurati di fornire le chiavi private corrette e i certificati SSL corrispondenti. Risolvi eventuali problemi relativi a chiave privata e certificato SSL.
Se non vedi alcun output del comando, il certificato SSL e la chiave SSL corrispondono.
Raccogliere informazioni diagnostiche
Se il problema persiste dopo aver seguito le istruzioni riportate in questa pagina, raccogli le seguenti informazioni di diagnostica e forniscile all'assistenza Apigee:
- L'intero output dettagliato di
curl
in cui viene visualizzato l'errore. - Acquisisci un
tcpdump
sulla macchina su cui vedi gli errori e condividilo rimuovendo eventuali informazioni sensibili e indirizzi IP. - Dopo aver consultato il tuo team di rete, dopo aver consultato il tuo team di rete per la condivisione con l'assistenza Apigee, tieni a portata di mano l'intera topologia di rete e il flusso di rete.