Cómo solucionar el error “ERR_SSL_UNSUPPORTED_CERTIFICATE”. Soporte inmediato gratuito




Cómo solucionar el error “ERR_SSL_UNSUPPORTED_CERTIFICATE”. Soporte inmediato gratuito






Cómo solucionar el error ERR_SSL_UNSUPPORTED_CERTIFICATE en Node.js

Descubre cómo resolver el error ERR_SSL_UNSUPPORTED_CERTIFICATE en Node.js, causado por problemas de compatibilidad con OpenSSL 3.0. Aprende a identificar su origen, actualizar Node.js, activar el proveedor legacy, crear un archivo .npmrc, actualizar dependencias y aplicar mejores prácticas en la configuración de certificados.

Usa nuestro chatbot gratuito para resolver problemas técnicos de forma eficiente.


Puntos Clave de la Guía

  1. Identificar la causa raíz del error ERR_SSL_UNSUPPORTED_CERTIFICATE.
  2. Actualizar Node.js para mantener la compatibilidad con OpenSSL.
  3. Activar el proveedor de OpenSSL legacy como medida temporal.
  4. Crear un archivo .npmrc para soluciones a largo plazo.
  5. Revisar y actualizar las dependencias del proyecto.
  6. Verificar la configuración de OpenSSL.
  7. Incorporar mejoras prácticas en la configuración de certificados.

1. Identificar la Causa del Error

El error ERR_SSL_UNSUPPORTED_CERTIFICATE ocurre principalmente cuando:

  • Un certificado SSL/TLS utiliza un algoritmo de firma considerado obsoleto, como MD5 o SHA-1.
  • El tamaño de clave asociado al certificado no cumple con los requisitos mínimos de OpenSSL 3.0.
  • Hay desajustes en la configuración de OpenSSL dentro del proyecto Node.js.

Herramientas para Diagnóstico

  • Usa la herramienta de línea de comandos openssl para revisar los detalles del certificado:
    openssl x509 -in certificado.pem -text -noout
    
  • Utiliza servicios en línea para la verificación de certificados, como SSL Labs o DigiCert SSL Tools.

2. Actualizar Node.js

Uno de los pasos iniciales es actualizar tu entorno de Node.js para asegurar compatibilidad con las versiones más recientes de OpenSSL.

Instrucciones:

  1. Comprobar tu versión actual:

    node -v
    
  2. Instalar la herramienta n para gestionar versiones de Node.js:

    npm install -g n
    
  3. Actualizar a la última versión estable:

n lts
  1. Confirmar la actualización:
    node -v
    

Nota para Usuarios de Windows:

En Windows, puedes usar nvm-windows para actualizar Node.js.

Nota: Si usas NordVPN para proteger las conexiones durante las descargas, consulta su página de afiliados aquí.


3. Activar el Proveedor Legacy de OpenSSL

Si no puedes actualizar Node.js o necesitas una solución rápida, activa el proveedor legacy de OpenSSL.

Solución Temporal para Entornos Linux/Mac

NODE_OPTIONS=--openssl-legacy-provider npm start

Windows (cmd o PowerShell)

set NODE_OPTIONS=--openssl-legacy-provider && npm start

Actualización en package.json

Para proyectos como React o Nuxt:

"scripts": {
  "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start",
  "build": "NODE_OPTIONS=--openssl-legacy-provider react-scripts build"
}

Archivo .npmrc

Para una solución persistente, crea un archivo .npmrc en la raíz del proyecto:

node-options="--openssl-legacy-provider"

4. Crear un Archivo .npmrc

El archivo .npmrc genera una configuración persistente para Node.js. Es una solución ideal cuando varios miembros del equipo comparten el mismo proyecto.

  1. Crear o editar el archivo .npmrc en tu proyecto:

    node-options="--openssl-legacy-provider"
    
  2. Agregar el archivo al control de versiones (Git):

    git add .npmrc
    git commit -m "Fix Node.js OpenSSL errors"
    

5. Actualizar Dependencias

Los errores de certificados suelen deberse también a dependencias que no son compatibles con las nuevas normativas de criptografía.

Pasos para Actualizar Dependencias:

  1. Generar una lista de dependencias obsoletas:

    npm outdated
    
  2. Actualizar todas las dependencias automáticamente:

    npm update
    
  3. Actualizar una dependencia específica:

npm install nombre_del_paquete@última_versión
  1. Usa una herramienta como npm-check-updates:
    npx npm-check-updates -u
    npm install
    

Tip Experto: Si estás trabajando con módulos específicos de servidores, como https-proxy-agent, revisa si sus métodos incluyen soporte para nuevas configuraciones.

Consulta herramientas como EaseUS DriverHandy para supervisar configuraciones de red y software.


6. Revisar la Configuración de OpenSSL

Confirma que tu configuración de OpenSSL cumple con las prácticas modernas:

  1. Ubica el archivo de configuración (openssl.cnf):

    openssl version -d
    
  2. Actualiza las opciones de seguridad:

    Cambia las líneas relacionadas con legacy o agrega las configuraciones apropiadas para claves mayores a 2048 bits.

  3. Reinicia los servicios que dependen de OpenSSL después de realizar cualquier cambio.


7. Mejores Prácticas para Configuración de Certificados

  • Evita certificados con algoritmos obsoletos como SHA-1. En su lugar, utiliza SHA-256 o superior.
  • Genera certificados con claves RSA de al menos 3072 bits.
  • Usa herramientas como Wondershare Recoverit para recuperar elementos relacionados con tus configuraciones.

Preguntas Frecuentes (FAQ)

1. ¿Por qué ocurre el error ERR_SSL_UNSUPPORTED_CERTIFICATE?

Este error ocurre debido a la incompatibilidad entre OpenSSL 3.0 y configuraciones antiguas de certificados o algoritmos no compatibles.


2. ¿Es peligroso usar --openssl-legacy-provider?

No es ideal a largo plazo, ya que habilitar compatibilidad con algoritmos obsoletos introduce riesgos de seguridad. Se recomienda actualizar las dependencias y configuraciones para evitar esta solución temporal.


3. ¿Qué versiones de Node.js son compatibles con OpenSSL 3.0?

A partir de Node.js 17, OpenSSL 3.0 se utiliza por defecto. Se recomienda usar versiones LTS más nuevas, como Node.js 18 o superiores.


4. ¿Existen herramientas para validar certificados?

Sí, puedes utilizar herramientas en línea como SSL Labs o verificar manualmente con comandos openssl.


Solucionar errores de este tipo requiere mantener tu software actualizado, utilizar herramientas modernas y comprender configuraciones de seguridad para entornos Node.js.