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
- Identificar la causa raíz del error
ERR_SSL_UNSUPPORTED_CERTIFICATE. - Actualizar Node.js para mantener la compatibilidad con OpenSSL.
- Activar el proveedor de OpenSSL
legacycomo medida temporal. - Crear un archivo
.npmrcpara soluciones a largo plazo. - Revisar y actualizar las dependencias del proyecto.
- Verificar la configuración de OpenSSL.
- 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
opensslpara 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:
-
Comprobar tu versión actual:
node -v -
Instalar la herramienta
npara gestionar versiones de Node.js:npm install -g n -
Actualizar a la última versión estable:
n lts
- Confirmar la actualización:
node -v
Nota para Usuarios de Windows:
En Windows, puedes usar nvm-windows para actualizar Node.js.
Nota: Si usas
NordVPNpara 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.
-
Crear o editar el archivo
.npmrcen tu proyecto:node-options="--openssl-legacy-provider" -
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:
-
Generar una lista de dependencias obsoletas:
npm outdated -
Actualizar todas las dependencias automáticamente:
npm update -
Actualizar una dependencia específica:
npm install nombre_del_paquete@última_versión
- 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:
-
Ubica el archivo de configuración (
openssl.cnf):openssl version -d -
Actualiza las opciones de seguridad:
Cambia las líneas relacionadas con
legacyo agrega las configuraciones apropiadas para claves mayores a 2048 bits. -
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.
