node.js - Keep getting error:0906D06C:PEM routines:PEM_read_bio:no start line -


going crazy trying solve error on node.js while trying contact xero api.

i've used bunch of combinations of '.cer' , '.crt' , '.pem'.

i've followed advice of number of stackoverflow posters.

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     @ error (native)     @ sign.sign (crypto.js:327:26)     @ xero.oa._createsignature (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/xero/index.js:19:68)     @ exports.oauth._getsignature (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/xero/node_modules/oauth/lib/oauth.js:90:15)     @ exports.oauth._prepareparameters (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/xero/node_modules/oauth/lib/oauth.js:300:16)     @ exports.oauth._performsecurerequest (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/xero/node_modules/oauth/lib/oauth.js:309:31)     @ xero.call (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/xero/index.js:51:20)     @ /users/beardedmac/projects/clause/clause-mean-stack/routes/external.js:47:10     @ layer.handle [as handle_request] (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/layer.js:95:5)     @ next (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/route.js:131:13)     @ route.dispatch (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/route.js:112:3)     @ layer.handle [as handle_request] (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/layer.js:95:5)     @ /users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/index.js:277:22     @ function.process_params (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/index.js:330:12)     @ next (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/router/index.js:271:10)     @ expressinit (/users/beardedmac/projects/clause/clause-mean-stack/node_modules/express/lib/middleware/init.js:33:5) 

anyone out there have insight?

the xero api says wants x509 certificate...i'm not making call though.

you need pem-encoded key xero module merely calls out node's built-in crypto module sign data. types of keys start with

 -----begin rsa private key----- 

and end with

 -----end rsa private key----- 

with base64-encoded data in between.

you can generate such key using openssl command-line utility:

 openssl genrsa -out privatekey.pem 2048 

then read privatekey.pem in node like:

var fs = require('fs'); var privatekey = fs.readfilesync('/path/to/privatekey.pem');  // pass `privatekey` rsa private key `xero` module ... 

Comments