2016-08-01 100 views
3

在嘗試聯繫Xero API時,試圖解決Node.js上的錯誤時發生瘋狂。不斷收到錯誤:0906D06C:PEM例程:PEM_read_bio:沒有啓動線

我已經使用了一堆'.cer'和'.crt'和'.pem'的組合。

我遵循了一些StackOverflow海報的建議。

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) 

任何人在那裏有一些見解?

Xero API說它想要一個X509證書......我甚至都沒有打過電話。

回答

2

您需要一個PEM編碼密鑰,因爲xero模塊僅呼叫節點的內置crypto模塊來簽署一些數據。這些類型的鍵開始

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

並用

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

在其間base64編碼數據結束。

可以使用openssl命令行實用程序產生這樣的關鍵:

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

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

我用PEM編碼,它似乎並不:

 openssl genrsa -out privateKey.pem 2048 

然後像節點讀取privateKey.pem正在工作。我使用openssl命令行選項創建了我的證書 – mjabraham

+1

說明「似乎沒有工作。」 – mscdex

+0

來自xero的節點庫的api調用會要求您輸入「RSA PRIVATE KEY」;我使用了許多由openssl創建的私鑰文件類型,包括crt,cer和pem。無論我使用哪個密鑰,我都會得到同樣的錯誤。 – mjabraham