Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
Síntoma
La aplicación cliente recibe un código de respuesta HTTP 502 con el mensaje
Bad Gateway como respuesta para las llamadas a la API en Edge Microgateway.
Como alternativa, el administrador recibirá un error self signed certificate in certificate
chain cuando ejecute el
edgemicro configure comando.
Mensaje de error
El cliente verá el siguiente mensaje de respuesta:
HTTP/1.1 502 Bad Gateway
A continuación, se muestran dos ejemplos comunes de respuestas de error:
{"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 se ejecuta 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 de la nube pública y privada de Edge |
| 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 TLS para el arranque. Si Edge presenta un certificado autofirmado, fallará. | Usuarios de la nube privada de Edge |
Causa: El servidor de destino presenta un certificado autofirmado
Si el servidor de destino presenta un certificado autofirmado en la conexión de salida, Edge Microgateway generará este error de forma predeterminada porque no confía en los certificados autofirmados.
Diagnóstico
Es posible que observes 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 es muy probable que Edge Microgateway haya
recibido un certificado autofirmado del servidor de destino. Para confirmar esto, sigue
estos pasos:
- Ejecuta el siguiente
opensslcomando para verificar la cadena de certificados del servidor de destino:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Si la cadena de certificados del servidor de destino está autofirmada, esta es la causa de 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
- Trabaja con el equipo propietario del servidor de destino para obtener un certificado TLS adecuado firmado por una autoridad certificadora (AC) de confianza.
Si eso no es posible, considera una de las siguientes opciones para permitir certificados autofirmados en Edge Microgateway.
Opción 1: Establece una propiedad del sistema para permitir que Edge Microgateway confíe en todos los certificados
- Si usas Docker, consulta Usa una AC en la que Node.js no confía.
De lo contrario, exporta una variable de entorno llamada
NODE_EXTRA_CA_CERTS, que apunte al archivo de AC raíz.Esto se documenta en el sitio web oficial Node.js de Node.js.
Opción 2: Configura el archivo de configuración YAML de Edge Microgateway para que confíe en ese certificado específico para ese servidor de destino
- 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 que se indican en Convierte certificados a un formato compatible.
Si hay una cadena de certificados, asegúrate de que los certificados estén en el orden correcto orden. El certificado de hoja siempre debe ser el primero, seguido del certificado intermedio y, luego, el certificado raíz. Hay más explicaciones 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 video Módulo de Edge Microgateway: Configura TLS de salida unidireccional y bidireccional. Consulta Configura SSL en el servidor de Edge Microgateway para obtener más información.
Si el problema persiste, consulta Se debe recopilar información de diagnóstico.
Causa: El servidor de administración de Apigee Edge usa un certificado autofirmado
Cuando se configura Edge Microgateway por primera vez, uno de los comandos que deberás ejecutar
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 el caso de la nube privada de Edge, la URL del servidor de administración se determina mediante el argumento -m.
Si habilitaste TLS para el servidor de administración, Edge Microgateway intentará verificar
el certificado que presenta el servidor de administración.
A continuación, se muestra un ejemplo del comando edgemicro configure para la nube privada de Edge:
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, recibirás 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
- En este caso, es posible que el servidor de administración
(
management.apigee-dev.net) muestre un certificado TLS autofirmado. - Es probable que el administrador del sistema de Apigee Edge haya proporcionado el certificado y tenga una copia de él.
- 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
- Si el servidor de administración tiene un certificado autofirmado, esa es la causa de este problema.
Solución
- Trabaja con el equipo propietario del servidor de destino para obtener un certificado TLS adecuado firmado por una autoridad certificadora (AC) de confianza.
Si eso no es posible, haz lo siguiente para permitir certificados autofirmados en Edge Microgateway.
- Establece una propiedad del sistema para permitir que Edge Microgateway confíe en todos los certificados.
- Si usas Docker, consulta Usa una AC en la que Node.js no confía.
- De lo contrario, exporta una variable de entorno llamada
NODE_EXTRA_CA_CERTS, que apunte al archivo de AC raíz.Esto se documenta en el sitio web oficial Node.js de.
Se debe recopilar información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Asistencia de Apigee Edge:
- Archivos de registro: La carpeta predeterminada es
/var/tmp, pero se puede anular en el archivoconfig.yamlprincipal (logging > dir parameter). Se recomienda cambiar ellog > levelainfoantes de proporcionar los archivos de registro a Asistencia de Apigee Edge. - Archivo de configuración: La configuración principal de Edge Microgateway reside en el archivo YAML
de la carpeta predeterminada de Edge Microgateway,
$HOME/.edgemicro. Hay un archivo de configuración predeterminado llamadodefault.yamly luego uno para cada entorno ORG-ENV-config.yaml. Sube este archivo completo para la organización y el entorno afectados.Documentos de referencia
Configura la IU de Edge para usar TLS para acceder a la API de Edge