Vous consultez la documentation d'Apigee Edge.
Consultez la
documentation Apigee X. en savoir plus
Problème constaté
L'application cliente reçoit un code de réponse HTTP 502
avec le message Bad Gateway
comme réponse aux appels d'API dans Edge Microgateway.
L'administrateur peut également recevoir une erreur self signed certificate in certificate
chain
lors de l'exécution de la commande
edgemicro configure
.
Message d'erreur
Le client verra le message de réponse suivant:
HTTP/1.1 502 Bad Gateway
Voici deux exemples courants de réponses d'erreur:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
Cette erreur peut également se produire lors de l'exécution de 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' }
Causes possibles
Cause | Description | Instructions de dépannage applicables |
---|---|---|
Le serveur cible présente un certificat autosigné | Edge Microgateway vérifie le certificat du serveur cible et, s'il n'est pas approuvé, génère une erreur d'exécution. | Utilisateurs Edge Public and Private Cloud |
Le serveur de gestion Apigee Edge utilise un certificat autosigné. | Lorsque vous configurez Edge Microgateway pour la première fois, elle se connecte à Apigee Edge via TLS pour l'amorçage. Si Edge présente un certificat autosigné, cette opération échoue. | Utilisateurs de cloud privé périphérique |
Cause: le serveur cible présente un certificat autosigné
Si un certificat autosigné est présenté par le serveur cible au niveau de la connexion directe sud, Edge Microgateway génèrera par défaut cette erreur, car il ne fait pas confiance aux certificats autosignés.
Diagnostic
L'erreur suivante peut apparaître dans les journaux (/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][]
Le code d'erreur SELF_SIGNED_CERT_IN_CHAIN
indique que Edge Microgateway a très probablement reçu un certificat autosigné de la part du serveur cible. Pour le vérifier, procédez comme suit:
- Exécutez la commande
openssl
suivante pour vérifier la chaîne de certificats du serveur cible :echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Si la chaîne de certificat du serveur cible est effectivement autosignée, c'est la cause du problème.
Dans l'exemple suivant, le serveur cible présente un certificat autosigné:
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
Résolution
- Collaborez avec l'équipe propriétaire du serveur cible pour obtenir un certificat TLS approprié, signé par une autorité de certification de confiance.
Si cela n'est pas possible, envisagez l'une des options suivantes pour autoriser les certificats autosignés dans Edge Microgateway.
Option n° 1: définissez une propriété système pour autoriser Edge Microgateway à approuver tous les certificats
- Si vous utilisez Docker, consultez Utiliser une autorité de certification non approuvée par Node.js.
Sinon, exportez une variable d'environnement appelée
NODE_EXTRA_CA_CERTS
, pointant vers le fichier d'autorité de certification racine.Ce processus est documenté sur le site Web officiel de Node.js.
Option 2: Configurer le fichier de configuration YAML Edge Microgateway pour approuver ce certificat spécifique pour ce serveur cible
- Assurez-vous de disposer du certificat (ou de la chaîne) du serveur cible au format PEM. Pour convertir d'autres formats de certificats au format PEM, suivez les instructions de la section Convertir des certificats dans un format compatible.
S'il existe une chaîne de certificats, assurez-vous que les certificats sont dans le bon ordre. Le certificat d'entité finale doit toujours apparaître en premier, suivi du certificat intermédiaire, puis du certificat racine. Pour en savoir plus, consultez la section Valider la chaîne de certificats.
Dans l'exemple suivant, nous avons configuré le fichier d'autorité de certification de confiance pour
untrusted-root.badssl.com
.edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
Les instructions de configuration sont également traitées dans la vidéo Module Edge Microgateway – Configurer le protocole TLS unidirectionnel et bidirectionnel dans la plage Sud. Pour en savoir plus, consultez la section Configurer SSL sur le serveur Edge Microgateway.
Si le problème persiste, consultez Recueil d'informations de diagnostic.
Cause: le serveur de gestion Apigee Edge utilise un certificat autosigné.
Lorsque Edge Microgateway est configuré pour la première fois, l'une des commandes que vous devez exécuter est edgemicro configure
ou edgemicro private configure
. Cette commande amorcera le cluster et contactera Apigee Edge pour télécharger les informations requises.
Pour le cloud privé Edge, l'URL du serveur de gestion est déterminée par l'argument -m
.
Si vous avez activé le protocole TLS pour le serveur de gestion, Edge Microgateway tente de vérifier le certificat présenté par le serveur de gestion.
Voici un exemple de commande edgemicro configure
pour 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
Si le serveur de gestion est configuré avec un certificat autosigné, l'erreur suivante s'affiche dans le résultat de la 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' }
Diagnostic
- Dans ce cas, il est possible que le serveur de gestion (
management.apigee-dev.net
) renvoie un certificat TLS autosigné. - Il est probable que votre administrateur système Apigee Edge ait fourni le certificat et en possède une copie.
- Sinon, exécutez la commande suivante pour obtenir des informations sur le certificat :
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- Si le serveur de gestion dispose d'un certificat autosigné, c'est la cause du problème.
Résolution
- Collaborez avec l'équipe propriétaire du serveur cible pour obtenir un certificat TLS approprié, signé par une autorité de certification de confiance.
Si cela n'est pas possible, procédez comme suit pour autoriser les certificats autosignés dans Edge Microgateway.
- Définissez une propriété système pour autoriser Edge Microgateway à approuver tous les certificats.
- Si vous utilisez Docker, consultez Utiliser une autorité de certification non approuvée par Node.js.
- Sinon, exportez une variable d'environnement appelée
NODE_EXTRA_CA_CERTS
qui pointe vers le fichier CA racine.Cela est documenté sur le site Web officiel de Node.js.
Vous devez collecter des informations de diagnostic
Si le problème persiste même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez l'assistance Apigee Edge:
- Fichiers journaux: le dossier par défaut est
/var/tmp
, mais il peut être ignoré dans le fichierconfig.yaml
principal (logging > dir parameter
). Il est recommandé de remplacerlog > level
parinfo
avant de fournir les fichiers journaux à l'assistance Apigee Edge. - Fichier de configuration: la configuration principale d'Edge Microgateway se trouve dans le fichier YAML du dossier Edge Microgateway par défaut,
$HOME/.edgemicro
. Il existe un fichier de configuration par défaut nommédefault.yaml
, puis un fichier pour chaque environnement ORG-ENV-config.yaml
. Importez ce fichier complet pour l'organisation et l'environnement concernés.Documents de référence
Configurez l'interface utilisateur Edge pour utiliser TLS afin d'accéder à l'API Edge