¿Cómo soluciono el error 502: “The request could not be satisfied” (No se pudo satisfacer la solicitud) de CloudFront?
Configuré una distribución de Amazon CloudFront con un dominio personalizado. Al solicitar el dominio alternativo de registro de nombre canónico (CNAME) a través de CloudFront, recibo una respuesta de error 502 con el mensaje: “The request could not be satisfied” (No se pudo satisfacer la solicitud).
Descripción breve
Se produce un error 502 cuando CloudFront no puede conectarse al origen. Consulte las siguientes secciones para conocer las causas del error y cómo solucionarlo.
Resolución
CloudFront no puede establecer una conexión TCP con el servidor de origen
De forma predeterminada, CloudFront se conecta al origen a través del puerto 80 (para HTTP) y el puerto 443 (para HTTPS). Si el origen no permite el tráfico en estos puertos o bloquea la conexión de la dirección IP de CloudFront, la conexión TCP falla. La falla produce un error 502. Para resolverlo, confirme que la configuración del Protocolo de la distribución de CloudFront se establezca en el puerto correcto para las conexiones HTTP o HTTPS.
Ejecute el siguiente comando para probar la conectividad del puerto:
telnet ORIGIN_DOMAIN/ORIGIN_IP PORT
Nota: Para ORIGIN_DOMAIN, ingrese el ID de su dominio de origen. Para ORIGIN_IP, ingrese la dirección IP de su origen. Para PORT, ingrese el número de puerto que utiliza para conectarse al origen.
Error en la negociación de SSL/TLS con el servidor de origen
Si la transacción SSL/TLS falla, la conexión entre CloudFront y el origen también falla, lo que produce un error 502. Consulte las siguientes secciones para conocer las causas de un error de la transacción SSL/TLS y cómo resolverlo.
El certificado SSL no coincide con el nombre de dominio
El certificado SSL del origen debe incluir o cubrir uno de los siguientes nombres de dominio:
- El nombre de dominio de origen en el campo Common Name (Nombre común) o en el campo Subject Alternative Names (Nombres alternativos del sujeto) del certificado.
- El nombre de dominio del encabezado del host para los encabezados del host del visor entrante que se reenvían al origen en la distribución de CloudFront.
Para comprobar el Common Name (Nombre común) y los Subject Alternative Names (Nombres alternativos del sujeto) en el certificado, ejecute el siguiente comando:
$ openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep -E '(CN|Alternative)' -A 2
Nota: Para DOMAIN, ingrese el nombre de dominio de origen. Para SERVER_DOMAIN, ingrese el nombre de dominio de origen. O bien, si el encabezado de host del visor se reenvía al origen, para SERVER_DOMAIN, ingrese el valor del encabezado de host entrante.
Configure la política de caché o la política de solicitud de origen para incluir el encabezado de host si se cumplen las siguientes condiciones:
- El nombre común o la red de área de almacenamiento (SAN) del certificado SSL incluye el valor del encabezado de host del visor.
- El encabezado de host no se reenvía al origen.
El certificado de origen caducó, no es fiable o está autofirmado
El certificado instalado en el origen personalizado debe estar firmado por una autoridad de certificación fiable. Las autoridades de certificación en las que confía CloudFront se encuentran en la Lista de certificados de CA incluidos en Mozilla en el sitio web de Mozilla.
CloudFront no admite certificados autofirmados para SSL configurados con el origen. Los certificados autofirmados los emiten las propias organizaciones o se generan localmente en un servidor web, en lugar de que los emita una autoridad de certificación fiable.
Para comprobar si su certificado de origen caducó, ejecute el siguiente comando OpenSSL. En la salida, busque los parámetros Not Before y Not After. Confirme que la fecha y la hora actuales estén dentro del periodo de validez del certificado.
$ openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep Validity -A 3
Nota: Para DOMAIN, ingrese el nombre de dominio de origen. Para SERVER_DOMAIN, ingrese el nombre de dominio de origen. O bien, si el encabezado de host del visor se reenvía al origen, para SERVER_DOMAIN, ingrese el valor del encabezado de host entrante.
Los certificados de CA intermedios faltantes o el orden incorrecto de los certificados intermedios provocan una falla entre la comunicación HTTPS y el origen. Para comprobar la cadena de certificados, ejecute el siguiente comando.
$ openssl s_client -showcerts -connect DOMAIN:443 -servername SERVER_DOMAIN
Nota: Para DOMAIN, ingrese el nombre de dominio de origen y para SERVER_DOMAIN ingrese el nombre de dominio de origen. O bien, si el encabezado de host del visor se reenvía al origen, para SERVER_DOMAIN, ingrese el valor del encabezado de host entrante.
CloudFront no admite el paquete de cifrado del origen
Las transacciones SSL/TLS entre CloudFront y el origen fallan si no existe un conjunto de cifrados común negociado. Para confirmar que utiliza el paquete de cifrado correcto, consulte Protocolos y cifrados compatibles entre CloudFront y el origen.
También puede utilizar una herramienta de prueba de servidor SSL para comprobar si su nombre de dominio de origen está incluido en la lista de cifrados compatibles.
CloudFront no puede resolver la dirección IP de origen
Si CloudFront no puede resolver el dominio de origen, genera el error 502. Para solucionar este problema, utilice un comando dig/nslookup para comprobar si el dominio de origen se resuelve en una IP.
Linux:
$ dig ORIGIN_DOMAIN_NAME
Windows:
nslookup ORIGIN_DOMAIN_NAME
Nota: Para ORIGIN_DOMAIN_NAME, ingrese el nombre de dominio de origen.
Si se ejecuta correctamente, el comando devuelve la IP del nombre de dominio de origen. Utilice una herramienta de comprobación de DNS para verificar la resolución de DNS en diferentes zonas geográficas.
El error se debe al origen ascendente
El origen personalizado definido en la distribución de CloudFront puede ser un proxy, un nombre de host de una red de entrega de contenido (CDN) o un equilibrador de carga conectado al origen real. Si alguno de estos servicios intermediarios no se conecta al origen, se devuelve un error 502 a CloudFront. Para resolver este problema, trabaje con su proveedor de servicios.
La función de Lambda@Edge asociada a la distribución de CloudFront falló en la validación
Si la función de Lambda@Edge devuelve una respuesta no válida a CloudFront, CloudFront genera un error 502. Para resolver este problema, compruebe la función de Lambda@Edge en busca de los siguientes problemas comunes:
- Objeto JSON devuelto
- Campos obligatorios faltantes
- Objeto no válido en la respuesta
- Adición o actualización de encabezados no permitidos o de solo lectura
- Tamaño máximo del cuerpo excedido
- Caracteres o valores que no son válidos
Para obtener más información, consulte Prueba y depuración de funciones de Lambda@Edge.
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años