Request: Error: certificado autofirmado en la cadena de certificados

Creado en 5 feb. 2016  ·  14Comentarios  ·  Fuente: request/request

Estoy tratando de analizar mis solicitudes contra un servidor usando Charles Proxy. El servidor usa TSL, por lo que tengo el clásico certificado falso para poder ver el tráfico claro.

NodeJS/Solicitud no me gusta, por lo que mi secuencia de comandos no se ejecuta y arroja ese error.

¿Cómo puedo evitar esto?

                console.log('Response status: ' + response.statusCode);
                                                          ^
TypeError: Cannot read property 'statusCode' of undefined
    at Request._callback (/xxx:88:59)
    at self.callback (/xxx:199:22)
    at Request.emit (events.js:107:17)
    at Request.onRequestError (/xxx:821:8)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:271:9)
    at TLSSocket.emit (events.js:107:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:942:18)
    at TLSSocket.emit (events.js:104:17)
    at TLSSocket._finishInit (_tls_wrap.js:460:8)
Error: Error: self signed certificate in certificate chain
Help (please use Stackoverflow)

Comentario más útil

Gracias por la explicación. Descubrí cómo evitar problemas con certificados falsos en caso de que a alguien le interese:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Con eso, puedo usar la autenticación SSL falsa para inspeccionar las comunicaciones entre mi cliente y un servidor.

Todos 14 comentarios

en este caso, response no está definido.
La respuesta no tiene que ser definida.
la respuesta solo se definirá si llegó una respuesta real.
si hubo algun error de conexion ese no es el caso.

verifique que se defina error , o que response.statusCode sea ​​mayor o igual que 400.

si quieres depurar este uso

env NODE_DEBUG="*" node asdf.js

Gracias por la explicación. Descubrí cómo evitar problemas con certificados falsos en caso de que a alguien le interese:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Con eso, puedo usar la autenticación SSL falsa para inspeccionar las comunicaciones entre mi cliente y un servidor.

Mi error fue similar pero ahora estoy bien gracias @nmaxcom

Error: no se puede verificar el primer certificado
en Error (nativo)
en TLSSocket.(_tls_wrap.js:929:36)
en TLSSocket.emit (eventos.js:104:17)
en TLSSocket._finishInit (_tls_wrap.js:460:8)

o simplemente puede usar let's encrypt, certificados que están firmados por una CA legítima.
los certificados autofirmados no tienen sentido ahora.

request.get({ uri: 'https://mydocker.com/v2/_catalog', rejectUnauthorized: false }

Para CA autofirmada, podemos especificar 'rejectUnauthorized = false'.
Compruebe request.js en la línea 623 y _tls_wrap.js en node.js.

Mejores alternativas son:
a) Realice la terminación SSL en su balanceador de carga
b) Usar un certificado gratuito

De esta manera, tiene una configuración única en todos sus entornos.
Tendrá mayor confianza en sus implementaciones y filtrará los errores antes.

rechazarObras no autorizadas en options.rejectUnauthorized = false
pero no en options.agentOptions.rejectUnauthorized = false

no se porque 😢

https://github.com/request/request/blob/v2.81.1/request.js#L257 -L259

Lo siento, solo veo el código. Entiendo que strictSSL es solo un alias de rejectUnauthorized
Tengo que decir que es un mal nombre, solo usa rejectUnauthorized 😭

obteniendo este error mientras se ejecuta el código
Error de análisis: error de sintaxis, 'var' inesperado (T_VAR), esperando el final del archivo en C:xampphtdocsPHPIMAPadminindex.php en la línea 146

var notificador = require('correo-notificador');
var imagen = {
nombre de usuario: "anandlintas2017",
contraseña: "xxxxxxxxx",
anfitrión: "imap.gmail.com",
puerto: 993, // puerto imap
seguro: verdadero // usa una conexión segura
};

notifier(imap).on('mail',function(mail){console.log(mail);}).start();
?>

para las personas que sugieren establecer rechazóUnautorizado=falso ¿Qué pasa si tengo servidores internos que deberían tener conexiones encriptadas entre sí con algunos certificados autofirmados? Supongo que configurar rechazarUnautorizado en falso detendrá el error, pero mis conexiones son 100% propensas a ataques MITM. vea que este es un error en la biblioteca nodejs tls que sufre y no puedo encontrar ninguna solución en ninguna parte (tengo google en la página 5 de los resultados de google que es realmente profundo) no sé cómo otras personas no lo hacen hablar de ello, me estoy perdiendo algo aquí! !!!!! Por favor, corríjame si estoy equivocado !!

rejectUnauthorized works in options.rejectUnauthorized = false
but not in options.agentOptions.rejectUnauthorized = false

Ambos no funcionan para mí

request.get({ uri: 'https://s3.amazonaws.com/...',
    rejectUnauthorized: false,
    // strictSSL: false,
    proxy: '127.0.0.1:8080',
    agentOptions: {
        rejectUnauthorized: false,
        // strictSSL: false,
    },
}, (...args) => {
    console.log(args);
    process.exit();
});

PD Ejecutando el código desde ELECTRON con el indicador de desactivación de ssl activado.

Para mí, deshabilitar el antivirus Kaspersky resolvió el problema.

https://github.com/request/request/issues/2061#issuecomment -182573171 parece ser la respuesta a la pregunta general

proceso.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

No da efecto.

¿Fue útil esta página
0 / 5 - 0 calificaciones