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:
- 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
-
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
- Trabajar con el equipo propietario del servidor de destino para obtener un certificado TLS adecuado firmado por un una autoridad certificadora (AC) de confianza.
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
- Si usas Docker, consulta lo siguiente: Usa una AC en la que Node.js no confíe
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
- 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
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
- En este caso, el servidor de administración
(
management.apigee-dev.net
) podría mostrar un certificado TLS autofirmado. - Es probable que el administrador del sistema de Apigee Edge haya proporcionado el certificado y tiene 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 del problema. problema.
Solución
- Trabajar con el equipo propietario del servidor de destino para obtener un certificado TLS adecuado firmado por un una autoridad certificadora (AC) de confianza.
Si eso no es posible, haz lo siguiente para permitir el acceso certificados en Edge Microgateway.
- Configura una propiedad del sistema para permitir que Edge Microgateway confíe en todos los certificados.
- Si usas Docker, consulta lo siguiente: Usa una AC en la que Node.js no confíe.
- 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 archivoconfig.yaml
principal (logging > dir parameter
). Sí se recomienda cambiarlog > level
ainfo
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 llamadodefault.yaml
y, luego, uno para cada entorno ORG-ENV-config.yaml
. Subir este archivo para la organización afectada y el entornoDocumentos de referencia
Configura la IU de Edge para usar TLS y acceder a la API de Edge