2016-08-01 22 views
3

Going verrückt versuchen, Fehler auf Node.js zu lösen, während versuchen, Xero API zu kontaktieren.Keep bekommen Fehler: 0906D06C: PEM-Routinen: PEM_read_bio: keine Startlinie

Ich habe eine Reihe von Kombinationen von ".cer" und ".crt" und ".pem" verwendet.

Ich habe die Ratschläge einiger StackOverflow-Poster befolgt.

Node.js https pem error: error:0906D06C:PEM routines:PEM_read_bio:no start line

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Error (native) 
    at Sign.sign (crypto.js:327:26) 
    at Xero.oa._createSignature (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/xero/index.js:19:68) 
    at exports.OAuth._getSignature (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/xero/node_modules/oauth/lib/oauth.js:90:15) 
    at exports.OAuth._prepareParameters (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/xero/node_modules/oauth/lib/oauth.js:300:16) 
    at exports.OAuth._performSecureRequest (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/xero/node_modules/oauth/lib/oauth.js:309:31) 
    at Xero.call (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/xero/index.js:51:20) 
    at /Users/BeardedMac/projects/clause/clause-mean-stack/routes/external.js:47:10 
    at Layer.handle [as handle_request] (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/layer.js:95:5) 
    at next (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/route.js:131:13) 
    at Route.dispatch (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/route.js:112:3) 
    at Layer.handle [as handle_request] (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/layer.js:95:5) 
    at /Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/index.js:277:22 
    at Function.process_params (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/index.js:330:12) 
    at next (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/router/index.js:271:10) 
    at expressInit (/Users/BeardedMac/projects/clause/clause-mean-stack/node_modules/express/lib/middleware/init.js:33:5) 

Jeder gibt einen Einblick haben?

Die Xero-API sagt, sie will ein X509-Zertifikat ... Ich mache nicht einmal den Anruf.

Antwort

2

Sie benötigen einen PEM-codierten Schlüssel, da das xero-Modul lediglich das eingebaute crypto-Modul des Knotens zur Signierung einiger Daten aufruft. Diese Arten von Schlüsseln beginnen mit

 
-----BEGIN RSA PRIVATE KEY----- 

und enden mit

 
-----END RSA PRIVATE KEY----- 

mit Base64-codierten Daten dazwischen.

Sie erzeugen einen solchen Schlüssel mit dem openssl Befehlszeilenprogramm:

 
openssl genrsa -out privateKey.pem 2048 

lesen Dann privateKey.pem in Knoten wie:

var fs = require('fs'); 
var privateKey = fs.readFileSync('/path/to/privateKey.pem'); 

// pass `privateKey` as the RSA private key to the `xero` module ... 
+0

I pem Codierung verwendet haben, scheint es nicht zu arbeite. Ich habe meine Zertifikate mit den Befehlszeilenoptionen von openssl erstellt – mjabraham

+1

Erklären Sie: "Scheint nicht zu funktionieren." – mscdex

+0

Der API-Aufruf aus der Xero-Knotenbibliothek fordert Sie auf, einen "RSA PRIVATE KEY" einzugeben. Ich habe eine Reihe von Dateitypen privater Schlüssel verwendet, die von openssl erstellt wurden, einschließlich crt, cer und pem. Unabhängig davon, welchen Schlüssel ich verwende, bekomme ich den gleichen Fehler. – mjabraham