2017-02-08 1 views
0

Ich versuche, meine erste REST-Client in Node.JS mit Unirest zu erstellen. Es soll mit einem Flask RestPlus-Server kommunizieren, der über Port 443 über Nginx vermittelt wird. Ich kann auf die Swagger-Dokumente in Chrome ohne SSL-Probleme zugreifen. Das SSL-Zertifikat ist nicht selbstsigniert und wird über Digicert ausgegeben. Es ist intern, wo ich arbeite. Wenn ich versuche, Anfragen mit Unirest zu bekommen, bekomme ich eine unable to get local issuer certificate. Ich kann die Funktion 'strictSSL (false)' zu meinem API-Aufruf hinzufügen und der Fehler verschwindet, aber ich würde es vorziehen, die SSL-Prüfung nicht zu deaktivieren. Ich habe überall auf Google nach einer Antwort gesucht, konnte aber nichts ausgraben. Jede Hilfe wäre willkommen. Ich verwende Node.JS in einer Windows 10-Umgebung für Dev/Testing, aber sobald der Code fertig ist, wird er in einer Cloud Foundry/Linux-Umgebung bereitgestellt.Verwenden von Node.JS und Unirest für REST-Client über HTTPS werfen Zertifikat Problem

Node.JS Code: unirest.get("https://path/to/api/call").headers(headers).end(function (res) { console.log(res); });

Fehler, die gegeben ist:

{ error: { Error: unable to get local issuer certificate at Error (native) at TLSSocket. (_tls_wrap.js:1062:38) at emitNone (events.js:86:13) at TLSSocket.emit (events.js:185:7) at TLSSocket._finishInit (_tls_wrap.js:586:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:416:38) code: >'UNABLE_TO_GET_ISSUER_CERT_LOCALLY' } }

Antwort

0

ich in der Lage war, diese die Lösung zu finden! Unter Verwendung des Moduls ssl-root-cas und Hinzufügen des folgenden Codes an den Anfang meiner Rest-Client-Datei wurde das Problem behoben.

var rootCas = require('ssl-root-cas/latest').create(); 
rootCas.addFile(__dirname + '/path/to/ca.pem'); 
require('https').globalAgent.options.ca = rootCas; 

Hoffentlich wird jemand anderes dies nützlich finden, wenn das gleiche Problem auftritt.