Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.2K
Vistas
nodejs: error en el certificado autofirmado en la cadena de certificados

Tengo un problema con las solicitudes https del lado del cliente.

Un fragmento puede verse así:

 var fs = require('fs'); var https = require('https'); var options = { hostname: 'someHostName.com', port: 443, path: '/path', method: 'GET', key: fs.readFileSync('key.key'), cert: fs.readFileSync('certificate.crt') } var requestGet = https.request(options, function(res){ console.log('resObj', res); }

Lo que obtengo es Error: certificado autofirmado en la cadena de certificados.

Cuando uso Postman, puedo importar el certificado y la clave del cliente y usarlos sin ningún problema. ¿Hay alguna solución disponible? También me gustaría que me dieran algunas luces sobre cómo el cartero maneja los certificados y funciona.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Opción 1: deshabilitar la advertencia (útil para desarrolladores)

Por su pregunta, supongo que está haciendo esto en desarrollo, ya que está utilizando un certificado autofirmado para la comunicación SSL.

Si ese es el caso, agregue como una variable de entorno donde esté ejecutando el nodo

 export NODE_TLS_REJECT_UNAUTHORIZED='0' node app.js

o ejecutar el nodo directamente con

 NODE_TLS_REJECT_UNAUTHORIZED='0' node app.js

Esto le indica a Node que permita certificados que no son de confianza (no confiable = no verificado por una autoridad de certificación)

Si no desea establecer una variable de entorno o necesita hacer esto para varias aplicaciones, npm tiene una configuración strict-ssl que establece en false

 npm config set strict-ssl=false

Opción 2: cargar en el certificado de CA, como cartero (útil para probar con TLS)

Si ya tiene un certificado de CA como el cartel que mencionó @kDoyle, puede configurarlo en cada solicitud (gracias @nic ferrier).

 let opts = { method: 'GET', hostname: "localhost", port: listener.address().port, path: '/', ca: fs.readFileSync("cacert.pem") }; https.request(opts, (response) => { }).end();

Opción 3: use un certificado SSL adecuado de una fuente confiable (útil para la producción)

letsencrypt.org es gratuito, fácil de configurar y las claves se pueden rotar automáticamente. https://letsencrypt.org/docs/

over 4 years ago · Santiago Trujillo Denunciar

0

Puede solucionar este problema usando NODE_TLS_REJECT_UNAUTHORIZED=0 en la terminal o insertando la siguiente línea dentro del archivo JS.

 process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;

Tenga en cuenta que esto es un truco y no debe usarse en producción.

Si está utilizando Windows, ejecute el siguiente comando en el símbolo del sistema:

 set NODE_TLS_REJECT_UNAUTHORIZED=0

Después de eso, npm install <my-package> funcionará.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede escribir el comando npm config set strict-ssl false

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda