502 Bad Gateway – Certificat autosigné dans la chaîne

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

<ph type="x-smartling-placeholder">

Symptôme

L'application cliente reçoit un code de réponse HTTP 502 avec le message Bad Gateway en réponse aux appels d'API dans Edge Microgateway.

L'administrateur reçoit également le message d'erreur self signed certificate in certificate chain lors de l'exécution de la <ph type="x-smartling-placeholder"></ph> edgemicro configure.

Message d'erreur

Le client reçoit 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
<ph type="x-smartling-placeholder"></ph> Le serveur cible présente un certificat autosigné Edge Microgateway vérifiera le certificat du serveur cible et, s'il n'est pas approuvé génère une erreur d'exécution. Utilisateurs Edge de cloud public et privé
Le serveur de gestion Apigee Edge utilise un certificat autosigné Lorsque vous configurez Edge Microgateway pour la première fois, il se connecte à Apigee Edge via TLS à l'amorçage. Si Edge présente un certificat autosigné, cette opération échouera. Utilisateurs de cloud privé Edge

Cause: le serveur cible présente un certificat autosigné

<ph type="x-smartling-placeholder">

Si un certificat autosigné est présenté par le serveur cible à l'adresse <ph type="x-smartling-placeholder"></ph> southbound, Edge Microgateway génère cette erreur par défaut, car il ne fait pas confiance aux certificats autosignés.

Diagnostic

Il est possible que l'erreur suivante s'affiche 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é du serveur cible. Pour vous en assurer, procédez comme suit:

  1. Exécutez la commande openssl suivante pour vérifier le bon fonctionnement du chaîne de certificats:
    echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
    
  2. Si la chaîne de certificats du serveur cible est effectivement autosignée, le problème.

    Dans l'exemple suivant, notez que 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
    

Solution

  1. Collaborez avec l'équipe propriétaire du serveur cible pour obtenir un certificat TLS approprié signé par un autorité de certification de confiance. <ph type="x-smartling-placeholder">
  2. Si cela n'est pas possible, envisagez l'une des options suivantes pour autoriser les autosignés certificats dans Edge Microgateway.

    <ph type="x-smartling-placeholder">

    Option 1: définir une propriété système pour permettre à Edge Microgateway d'approuver tous les certificats

    1. Si vous utilisez Docker, consultez les <ph type="x-smartling-placeholder"></ph> Utiliser une autorité de certification non approuvée par Node.js
    2. Sinon, exportez une variable d'environnement appelée NODE_EXTRA_CA_CERTS, pointant vers le fichier CA racine.

      Ces informations sont indiquées sur la page Node.js sur votre site Web.

    <ph type="x-smartling-placeholder">

    Option 2: configurer le fichier de configuration YAML Edge Microgateway pour faire confiance à ce un certificat pour ce serveur cible

    1. Assurez-vous que le certificat (ou la chaîne) du serveur cible est au format PEM. À convertir d'autres formats de certificat au format PEM, <ph type="x-smartling-placeholder"></ph> Conversion des certificats dans un format compatible
    2. S'il existe une chaîne de certificats, assurez-vous que les certificats sont au bon commande. Le certificat d'entité finale doit toujours apparaître en premier, suivi du certificat intermédiaire le certificat racine, puis le certificat racine. Vous trouverez plus d'explications à ce sujet dans <ph type="x-smartling-placeholder"></ph> Validation de la chaîne de certificats

      Dans l'exemple suivant, nous avons configuré le fichier CA 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 décrites dans le <ph type="x-smartling-placeholder"></ph> Vidéo Edge Microgateway Module - Configure 1-way and 2-way Southbound TLS Consultez <ph type="x-smartling-placeholder"></ph> Configuration SSL sur le serveur Edge Microgateway pour en savoir plus.

Si le problème persiste, accédez à Obligation de recueillir des informations de diagnostic.

Cause: le serveur de gestion Apigee Edge utilise un certificat autosigné

<ph type="x-smartling-placeholder">

Lorsque vous configurez Edge Microgateway pour la première fois, l'une des commandes que vous devez exécuter est edgemicro configure ou edgemicro private configure. Cette commande amorce le cluster, qui contacte Apigee Edge pour télécharger les informations requises.

Pour Edge Private Cloud, 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 tentera 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é, vous obtiendrez le l'erreur suivante 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

  1. Dans ce cas, le serveur de gestion (management.apigee-dev.net) peut renvoyer un certificat TLS autosigné.
  2. Il est probable que votre administrateur système Apigee Edge ait fourni le certificat et en possède une copie.
  3. 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
    
  4. Si le serveur de gestion dispose d'un certificat autosigné, c'est la cause de ce problème. problème.

Solution

  1. Collaborez avec l'équipe propriétaire du serveur cible pour obtenir un certificat TLS approprié signé par un autorité de certification de confiance. <ph type="x-smartling-placeholder">
  2. Si cela n'est pas possible, procédez comme suit pour autoriser les certificats autosignés certificats dans Edge Microgateway.

  3. <ph type="x-smartling-placeholder">
  4. Définissez une propriété système pour autoriser Edge Microgateway à approuver tous les certificats.
  5. Si vous utilisez Docker, consultez les <ph type="x-smartling-placeholder"></ph> Utiliser une autorité de certification non approuvée par Node.js
  6. Sinon, exportez une variable d'environnement appelée NODE_EXTRA_CA_CERTS, pointant vers le fichier CA racine. documenté sur la page officielle Site Web Node.js. <ph type="x-smartling-placeholder">

Vous devez collecter des informations de diagnostic

Si le problème persiste alors que vous avez suivi les instructions ci-dessus, rassemblez les informations suivantes : de diagnostic, puis contactez l'assistance Apigee Edge:

  • Fichiers journaux: le dossier par défaut est /var/tmp, mais il peut être remplacé dans le fichier config.yaml principal (logging > dir parameter). Il est est recommandé de remplacer log > level par info avant de fournir la valeur à l'assistance Apigee Edge.
  • Fichier de configuration: la configuration principale d'Edge Microgateway se trouve dans le fichier YAML dans le dossier Edge Microgateway par défaut, $HOME/.edgemicro. Il y a un fichier de configuration par défaut appelé default.yaml, puis un pour chaque environnement ORG-ENV-config.yaml. Importer ce fichier pour l'organisation et l'environnement concernés.

    Documents de référence

    <ph type="x-smartling-placeholder"></ph> Configurer l'interface utilisateur Edge pour utiliser TLS afin d'accéder à l'API Edge