我正在尝试运行DocuSign https://github.com/docusign/eg-01-node-jwt示例,并遇到PEM错误-PEM_read_bio:错误的结束行
我本来有一个开始行错误,但由于错过了----- BEGIN RSA PRIVATE KEY -----和END Key注释而已得到纠正,因此这指向私钥的另一个问题。我尝试了各种不同的引号,并更改了键的格式,但仍然出现错误
谷歌搜索错误给我答案格式或破折号,但所有这一切似乎都是正确的
自述文件说您可以使用环境变量,但是这些变量似乎不接受这么长的字符串-如果我进行粘贴,我只会得到第一行的开头
我正在使用示例中的dsconfig.js
/** The private key */
/** Enter the key as a multiline string value. No leading spaces! */
, privateKey: env.DS_PRIVATE_KEY || `-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAgXxpEI/it1KvSFTgduXIAbBBqnwTZXasyt4AaBHkuw+VFyhk
………..
10kBAoGASgk77R0K87kUOvqLTDYQydV6pMyenLuGt+KsqsaiHwxO8/x53JEJn710
uYJku2KMSAKndzlPnYfDw9yFN9BxENvzKzL4oRa8Lbfq+ziHFlfRiNvO1ebNURV5
YNdbhBO4UfTx8808l84bNbL5e+2/w4O9FmoeUD1pO0H1RQCtDiI=
-----END RSA PRIVATE KEY-----`
(已删除密钥的中间部分)
因此,当我开始运行时,会出现此错误
c:\ Users .. \ eg-01-node-jwt-master> npm start
docusign_eg01_oauth_jwt_authentication@1.0.0开始c:\ Users .. \ eg-01-node-jwt-master 节点index.js
发送包含三个文档的信封。此操作大约需要15秒钟...
checkToken: Starting up--need an accessToken
(node:14568) UnhandledPromiseRejectionWarning: Error: error:0906D066:PEM routines:PEM_read_bio:bad end line
at Sign.sign (internal/crypto/sig.js:80:26)
at Object.sign (c:\Users\..\eg-01-node-jwt-master\node_modules\jwa\index.js:76:45)
at Object.jwsSign [as sign] (c:\Users\..\eg-01-node-jwt-master\node_modules\jws\lib\sign-stream.js:32:24)
at Object.module.exports [as sign] (c:\Users\..\eg-01-node-jwt-master\node_modules\jsonwebtoken\sign.js:189:16)
at generateAndSignJWTAssertion (c:\Users\..\eg-01-node-jwt-master\node_modules\docusign-esign\src\ApiClient.js:62:16)
at exports.requestJWTUserToken (c:\Users\..\eg-01-node-jwt-master\node_modules\docusign-esign\src\ApiClient.js:881:19)
at Object._getToken [as getToken] (c:\Users\..\eg-01-node-jwt-master\lib\dsJwtAuth.js:94:31)
at Object._checkToken [as checkToken] (c:\Users..\eg-01-node-jwt-master\lib\dsJwtAuth.js:65:35)
at Object._sendEnvelope [as sendEnvelope] (c:\Users..\eg-01-node-jwt-master\lib\sendEnvelope.js:62:19)
at main (c:\Users\..\eg-01-node-jwt-master\index.js:40:36)
(节点:14568)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。 (拒绝ID:2) (节点:14568)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。
答案 0 :(得分:0)
这是一个关键的格式问题,可以解决:
\n
对密钥中的任何\\n
序列进行正则表达式替换注意:如果使用Sublime,请确保在执行查找/替换时已启用“正则表达式”选项,否则它将无法正常工作。
答案 1 :(得分:0)
嗯,对不起,您遇到了这个麻烦。
Ergin的答案也可能有效。就个人而言,我不需要在Mac上删除新行。如果您使用Windows,则可能有所不同。
要检查的项目:
node --version应该返回v8.11或更高版本
确保您使用的是管理工具中的私钥,而不是公钥。
确保您使用反引号-来环绕RSA私钥。
确保未设置环境变量DS_PRIVATE_KEY。或者可能更容易,将其从行中删除。
确保您的client_id(集成密钥)正确。
例如
, privateKey: `-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAkbz3bi31zrH2ry4p8S4ncPoMdkUyu+MG46m9BalOKzWNNAvW
1LVs5ftlXxzA6V0m6nx895w8S761/qZ8xtAAl99DezRn/3CueeBUyw+tvlmEBu1C
IJK69GVoSInIKf6qyeL1WxxFV5R17QtIiQeT2yCa/fitCaxwxkNlYpP4wd5tcG0W
PEHgznlGh/vUboCuA4tQOcKytxFfKG4F+jM/g4GH9z46KZOow3Hb6g==
-----END RSA PRIVATE KEY-----`
行被忽略了。
要调试,请将断点放在https://github.com/docusign/eg-01-node-jwt/blob/master/lib/dsJwtAuth.js的第93行
然后计算表达式dsConfig.privateKey