Keep getting error:0906D06C:PEM routines:PEM_read_bio:no start line
16,163
You need a PEM-encoded key as the xero
module merely calls out to node's built-in crypto
module to sign some data. Those 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 a key using the 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` as the RSA private key to the `xero` module ...
Author by
GeneralBear
Updated on June 13, 2022Comments
-
GeneralBear about 2 years
Going crazy trying to solve error on Node.js while trying to contact Xero API.
I've used a bunch of combinations of '.cer' and '.crt' and '.pem'.
I've followed the advice of a 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 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)
Anyone out there have some insight?
The Xero API says it wants an X509 certificate...I'm not even making the call though.