Imansible verificare la firma della foglia

Sto usando node.js request.js per raggiungere un’api. Sto ricevendo questo errore

[Errore: UNABLE_TO_VERIFY_LEAF_SIGNATURE]

Tutte le mie credenziali sono accurate e valide e il server va bene. Ho fatto la stessa richiesta con il postino.

request({ "url": domain+"/api/orders/originator/"+id, "method": "GET", "headers":{ "X-API-VERSION": 1, "X-API-KEY": key }, }, function(err, response, body){ console.log(err); console.log(response); console.log(body); }); 

Questo codice è appena in esecuzione in uno script eseguibile ex. node ./run_file.js , è per questo? Ha bisogno di funzionare su un server?

Nota : quanto segue è pericoloso e consentirà di intercettare e modificare il contenuto dell’API tra il client e il server.

Anche questo ha funzionato

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

Non è un problema con l’applicazione, ma con il certificato che è firmato da una CA intermediaria. Se accetti questo fatto e vuoi comunque procedere, aggiungi quanto segue per richiedere le opzioni:

 rejectUnauthorized: false 

Richiesta completa:

 request({ "rejectUnauthorized": false, "url": domain+"/api/orders/originator/"+id, "method": "GET", "headers":{ "X-API-VERSION": 1, "X-API-KEY": key }, }, function(err, response, body){ console.log(err); console.log(response); console.log(body); }); 

La soluzione sicura consiste nell’aggiungere i certificati necessari alla catena. Prima installa il pacchetto ssl-root-cas da npm:

 npm install ssl-root-cas 

Questo pacchetto contiene molti certificati intermedi che i browser si fidano ma il nodo no.

 var sslRootCAs = require('ssl-root-cas/latest') sslRootCAs.inject() 

Aggiungerà i certificati mancanti. Guarda qui per ulteriori informazioni:

https://github.com/coolaj86/node-ssl-root-cas

La soluzione di CoolAJ86 è corretta e non compromette la tua sicurezza come disabilitare tutti i controlli usando rejectUnauthorized o NODE_TLS_REJECT_UNAUTHORIZED . Tuttavia, potrebbe essere necessario iniettare un certificato CA aggiuntivo in modo esplicito.

Ho provato prima le CA radice incluse dal modulo ssl-root-cas :

 require('ssl-root-cas/latest') .inject(); 

Ho ancora finito con l’errore UNABLE_TO_VERIFY_LEAF_SIGNATURE . Poi ho scoperto chi ha rilasciato il certificato per il sito web a cui mi collegavo con l’ analizzatore SSL COMODO , ho scaricato il certificato di tale autorità e ho provato ad aggiungere solo quello:

 require('ssl-root-cas/latest') .addFile(__dirname + '/comodohigh-assurancesecureserverca.crt'); 

Ho finito con un altro errore: CERT_UNTRUSTED . Infine, ho iniettato le CA radice aggiuntive e incluso la “mia” CA (apparentemente intermedia), che ha funzionato:

 require('ssl-root-cas/latest') .inject() .addFile(__dirname + '/comodohigh-assurancesecureserverca.crt'); 

Mettetelo qui nel caso in cui aiuti qualcuno, il mio caso era diverso e un mix un po ‘strano. Stavo ricevendo questo su una richiesta a cui si accedeva tramite superagent – il problema non aveva nulla a che fare con i certificati (che erano stati configurati correttamente) e tutto ciò con il fatto che stavo passando il risultato superagente attraverso la richiamata cascata del modulo asincrono . Per risolvere il problema: anziché passare l’intero risultato, basta passare result.body attraverso la richiamata della cascata.

Ho avuto gli stessi problemi. Ho seguito la soluzione @ThomasReggi e @ CoolAJ86 e ho lavorato bene, ma non sono soddisfatto della soluzione.

Perché il problema “UNABLE_TO_VERIFY_LEAF_SIGNATURE” è successo a causa del livello di configurazione della certificazione.

Accetto la soluzione di @thirdender ma la sua soluzione parziale. Secondo il sito ufficiale di nginx , hanno chiaramente menzionato che il certificato dovrebbe essere una combinazione di certificato del server e certificati concatenati.

inserisci la descrizione dell'immagine qui

Ho avuto un problema con la mia configurazione di Apache dopo aver installato un certificato GoDaddy su un sottodominio. Originariamente pensavo che potesse essere un problema con Node che non inviava un Indicatore del nome del server (SNI), ma non era così. L’analisi del certificato SSL del sottodominio con https://www.ssllabs.com/ssltest/ ha restituito l’errore. Problemi della catena: incompleto .

Dopo aver aggiunto il file gd_bundle-g2-g1.crt fornito da GoDaddy tramite la direttiva Apache SSLCertificateChainFile , il nodo è stato in grado di connettersi tramite HTTPS e l’errore è andato via.