Request: Erro: certificado autoassinado na cadeia de certificados

Criado em 5 fev. 2016  ·  14Comentários  ·  Fonte: request/request

Estou tentando analisar minhas solicitações em um servidor usando Charles Proxy. O servidor usa TSL, então eu tenho o certificado falso clássico para poder visualizar o tráfego limpo.

NodeJS/Request não gosta, então meu script não roda e lança esse erro.

Como posso contornar isso?

                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)

Comentários muito úteis

Obrigada pelo esclarecimento. Descobri como evitar problemas com certificados falsos caso alguém se interesse:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Com isso, posso usar autenticação SSL falsa para inspecionar as comunicações entre meu cliente e um servidor.

Todos 14 comentários

neste caso response é indefinido.
resposta não precisa ser definida.
resposta só será definida se uma resposta real chegar.
se houve algum erro de conexão que não é o caso.

verifique se error está definido ou response.statusCode é maior ou igual a 400.

se você quiser depurar isso use

env NODE_DEBUG="*" node asdf.js

Obrigada pelo esclarecimento. Descobri como evitar problemas com certificados falsos caso alguém se interesse:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Com isso, posso usar autenticação SSL falsa para inspecionar as comunicações entre meu cliente e um servidor.

Meu erro foi semelhante, mas agora estou bem, obrigado @nmaxcom

Erro: não foi possível verificar o primeiro certificado
em Erro (nativo)
em TLSSocket.(_tls_wrap.js:929:36)
em TLSSocket.emit (eventos.js:104:17)
em TLSSocket._finishInit (_tls_wrap.js:460:8)

ou você pode simplesmente usar vamos criptografar, certificados assinados por uma CA legítima.
certificados auto-assinados não fazem sentido agora.

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

Para CA autoassinada, podemos especificar 'rejectUnauthorized = false'.
Verifique request.js na linha 623 e _tls_wrap.js em node.js.

As melhores alternativas são:
a) Faça a terminação SSL em seu balanceador de carga
b) Use um certificado gratuito

Dessa forma, você tem uma configuração única em todos os seus ambientes.
Você terá mais confiança em suas implantações e filtrará os erros mais cedo.

rejeitar trabalhos não autorizados em options.rejectUnauthorized = false
mas não em options.agentOptions.rejectUnauthorized = false

não sei porque 😢

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

Desculpe, veja apenas o código. Eu entendo que strictSSL é apenas um alias para rejectUnauthorized
Tenho que dizer que é um nome ruim, basta usar rejectUnauthorized 😭

recebendo este erro enquanto o código runnign
Erro de análise: erro de sintaxe, 'var' inesperado (T_VAR), esperando o fim do arquivo em C:xampphtdocsPHPIMAPadminindex.php na linha 146

var notifier = require('mail-notifier');
var imap = {
nome de usuário: "anandlintas2017",
senha: "xxxxxxxxx",
host: "imap.gmail.com",
porta: 993, // porta imap
secure: true // usa conexão segura
};

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

para as pessoas que sugerem definir rejectUnauthorized=false e se eu tiver servidores internos que deveriam ter conexões criptografadas entre si com alguns certificados autoassinados, acho que a configuração rejectUnauthorized para false interromperá o erro, mas minhas conexões são 100% propensas a ataques MITM, eu veja que este é um bug na biblioteca nodejs tls que sofre e não consigo encontrar nenhuma correção em nenhum lugar (tenho o google para a página 5 dos resultados do google que é muito profundo) não sei como outras pessoas não falar sobre isso, estou faltando alguma coisa aqui! !!!!! Por favor corrija-me se eu estiver errado !!

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

Ambos não funcionam para mim

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();
});

PS Executando o código de dentro do ELECTRON com o sinalizador de desabilitação ssl ativado.

Para mim, desabilitar o antivírus Kaspersky resolveu o problema.

https://github.com/request/request/issues/2061#issuecomment -182573171 parece ser a resposta para a pergunta geral

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Não dá efeito.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

codecowboy picture codecowboy  ·  3Comentários

chenby picture chenby  ·  3Comentários

IgorDePaula picture IgorDePaula  ·  3Comentários

jdarling picture jdarling  ·  3Comentários

lupo9557 picture lupo9557  ·  3Comentários