502 Bad Gateway: Certificado autofirmado en cadena

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Síntoma

La aplicación cliente recibe un código de respuesta HTTP de 502 con el mensaje Bad Gateway como respuesta a las llamadas a la API en Edge Microgateway.

Como alternativa, el administrador recibirá un error self signed certificate in certificate chain cuando ejecute el Comando edgemicro configure.

Mensaje de error

El cliente verá el siguiente mensaje de respuesta:

HTTP/1.1 502 Bad Gateway

Dos ejemplos comunes de respuestas de error son los siguientes:

{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}

Como alternativa, este error puede ocurrir cuando ejecutas 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' }

Causas posibles

Causa Descripción Instrucciones de solución de problemas aplicables para
El servidor de destino presenta un certificado autofirmado Edge Microgateway verificará el certificado del servidor de destino y, si no es de confianza, generará un error de tiempo de ejecución. Usuarios perimetrales de nubes públicas y privadas
El servidor de administración de Apigee Edge usa un certificado autofirmado Cuando configures Edge Microgateway por primera vez, se conectará a Apigee Edge a través de De TLS al arranque Si Edge presenta un certificado autofirmado, este proceso fallará. Usuarios de la nube privada perimetral

Causa: El servidor de destino presenta un certificado autofirmado

Si un certificado autofirmado se presenta en el servidor de destino en hacia el sur, Edge Microgateway generará este error de forma predeterminada porque no confía en los certificados autofirmados.

Diagnóstico

Puedes observar el siguiente error en los registros (/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][]

El código de error SELF_SIGNED_CERT_IN_CHAIN indica que Edge Microgateway tiene es muy probable que hayan recibido un certificado autofirmado del servidor de destino. Para confirmarlo, realiza sigue estos pasos:

  1. Ejecuta el siguiente comando openssl para verificar el servidor de destino cadena de certificados:
    echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
    
  2. Si la cadena de certificados del servidor de destino está autofirmada, entonces esta es la causa del el problema.

    En el siguiente ejemplo, observa que el servidor de destino presenta un certificado autofirmado:

    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
    

Solución

  1. Trabajar con el equipo propietario del servidor de destino para obtener un certificado TLS adecuado firmado por un una autoridad certificadora (AC) de confianza.
  2. Si eso no es posible, considera una de las siguientes opciones para permitir el acceso certificados en Edge Microgateway.

    Opción 1: Configura una propiedad del sistema para permitir que Edge Microgateway confíe en todas certificados

    1. Si usas Docker, consulta lo siguiente: Usa una AC en la que Node.js no confíe
    2. De lo contrario, exporta una variable de entorno llamada NODE_EXTRA_CA_CERTS. que apunta al archivo de AC raíz.

      Esto se documenta en el sitio web Node.js sitio web.

    Opción 2: Configura el archivo de configuración YAML de Edge Microgateway para que confíe en ese archivo certificado para ese servidor de destino

    1. Asegúrate de tener el certificado (o la cadena) del servidor de destino en formato PEM. Para convertir otros formatos de certificado a PEM, sigue las instrucciones de Conversión de certificados a un formato compatible
    2. Si hay una cadena de certificados, asegúrate de que los certificados estén en la en el orden personalizado. El certificado de entidad final siempre debe ir primero, seguido del intermedio. certificado y, luego, el certificado raíz. Hay más explicación sobre esto en Valida la cadena de certificados.

      En el siguiente ejemplo, configuramos el archivo de AC de confianza para untrusted-root.badssl.com

      edgemicro:
      ...
      targets:
        - host: 'untrusted-root.badssl.com'
          ssl:
            client
              ca: /opt/apigee/certs/untrusted-root.pem
      

    Las instrucciones para configurar esto también se incluyen en el Módulo de Edge Microgateway - Configura video de TLS de dirección unidireccional y bidireccional Consulta Configura SSL en el servidor de Edge Microgateway para obtener más información.

Si el problema persiste, ve a Se debe recopilar información de diagnóstico.

Causa: El servidor de administración de Apigee Edge usa un certificado autofirmado

Cuando se configure Edge Microgateway por primera vez, deberás ejecutar uno de los comandos es edgemicro configure o edgemicro private configure. Este comando iniciar el clúster y se comunicará con Apigee Edge para descargar la información requerida.

En la nube privada perimetral, el argumento -m determina la URL del servidor de administración. Si habilitaste TLS para el servidor de administración, Edge Microgateway intentará realizar la verificación el certificado que presenta el servidor de administración.

A continuación, se muestra un comando de ejemplo de edgemicro configure para la nube privada perimetral:

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 el servidor de administración está configurado con un certificado autofirmado, obtendrá el siguiente error en el resultado de la consola.

{ 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' }

Diagnóstico

  1. En este caso, el servidor de administración (management.apigee-dev.net) podría mostrar un certificado TLS autofirmado.
  2. Es probable que el administrador del sistema de Apigee Edge haya proporcionado el certificado y tiene una copia de él.
  3. De lo contrario, ejecuta el siguiente comando para obtener información sobre el certificado:
    echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
    
  4. Si el servidor de administración tiene un certificado autofirmado, esa es la causa del problema. problema.

Solución

  1. Trabajar con el equipo propietario del servidor de destino para obtener un certificado TLS adecuado firmado por un una autoridad certificadora (AC) de confianza.
  2. Si eso no es posible, haz lo siguiente para permitir el acceso certificados en Edge Microgateway.

  3. Configura una propiedad del sistema para permitir que Edge Microgateway confíe en todos los certificados.
  4. Si usas Docker, consulta lo siguiente: Usa una AC en la que Node.js no confíe.
  5. De lo contrario, exporta una variable de entorno llamada NODE_EXTRA_CA_CERTS. que apunta al archivo de AC raíz. documentados en el sitio web Sitio web de Node.js.

Se debe recopilar información de diagnóstico

Si el problema persiste, incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y, luego, comunícate con el equipo de asistencia de Apigee Edge:

  • Archivos de registro: La carpeta predeterminada es /var/tmp, pero se puede anular en el archivo config.yaml principal (logging > dir parameter). Sí se recomienda cambiar log > level a info antes de proporcionar la archivos de registro a la Asistencia de Apigee Edge.
  • Archivo de configuración: La configuración principal de Edge Microgateway se encuentra en el archivo YAML en la carpeta predeterminada de Edge Microgateway, $HOME/.edgemicro. Hay una archivo de configuración predeterminado llamado default.yaml y, luego, uno para cada entorno ORG-ENV-config.yaml. Subir este archivo para la organización afectada y el entorno

    Documentos de referencia

    Configura la IU de Edge para usar TLS y acceder a la API de Edge