Inicio → Ayuda

SSL certificate verify failed al llamar a una API de IA

Algo entre tú y el proveedor está terminando TLS y volviéndolo a firmar con un certificado en el que el entorno de ejecución de tu lenguaje no confía. El certificado del proveedor está bien; a tu almacén de confianza le falta la raíz del interceptor.

Lo que ves

Por qué ocurre

Los proxies corporativos, algunos antivirus y la mayoría de los equipos de inspección VPN descifran HTTPS para mirar dentro y luego emiten su propio certificado. Los sistemas operativos reciben esa raíz instalada de forma centralizada; Python, Node y Go a menudo incluyen o usan su propio almacén de confianza y nunca la ven. Ese es exactamente el hueco donde curl funciona y tu código falla.

El error también aparece sin ningún proxy cuando la lista de CA incluida en un entorno se ha quedado obsoleta, típicamente en una imagen de contenedor antigua o en una VM de larga vida que nunca se ha actualizado.

No es un problema de autenticación. La petición nunca completa el handshake, así que nunca se envía ninguna clave y nada llega a los registros del proveedor.

Comprueba si es esta la causa

Mira quién firmó el certificado que estás recibiendo realmente:

openssl s_client -connect YOUR_DOMAIN:443 -servername YOUR_DOMAIN </dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -subject

Si el emisor es una CA pública, el almacén de confianza de tu entorno está obsoleto. Si aparece el nombre de tu empresa, de un equipo de seguridad o de un fabricante de antivirus, el tráfico está siendo interceptado y necesitas instalar esa raíz donde la busca tu entorno.

Cómo solucionarlo

  1. Apunta el entorno al paquete de CA correctoExporta la raíz del interceptor y configura REQUESTS_CA_BUNDLE o SSL_CERT_FILE para Python, NODE_EXTRA_CA_CERTS para Node. Así la verificación sigue activada, que es de lo que se trata.
  2. Actualiza los certificados incluidosReinstala o actualiza el paquete certifi, o reconstruye el contenedor sobre una imagen base actual. Los paquetes obsoletos fallan con certificados intermedios más nuevos.
  3. No desactives la verificaciónverify=False y NODE_TLS_REJECT_UNAUTHORIZED=0 hacen desaparecer el error aceptando cualquier certificado, incluido el de quien esté en tu red. Y por esa conexión estás enviando una clave de API.
Esto ocurre íntegramente en el lado del cliente, así que nada en tu registro de uso de APICLAN mostrará un handshake fallido: la petición nunca llegó. Un registro vacío junto a un error TLS es la combinación esperada, no un segundo problema.

Relacionado

Unexpected token '<' al llamar a una API compatible con OpenAI401 invalid API key: cuando la clave parece correcta pero sigue fallando

Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela compatible con OpenAI en producción, no recopilado de otras webs.