我已经克隆了这个 repo ( https://github.com/docusign/code-examples-node ) 并且相信我已经输入了所有必需的密钥和代码。但是,当我尝试使用 JWT 进行身份验证时,出现此错误:
at Sign.sign (internal/crypto/sig.js:105:29)
at Object.sign (C:\Users\BrownJ3\Documents\repos\code-examples-node\node_modules\jwa\index.js:152:45)
at Object.jwsSign [as sign] (C:\Users\BrownJ3\Documents\repos\code-examples-node\node_modules\jws\lib\sign-stream.js:32:24)
at Object.module.exports [as sign] (C:\Users\BrownJ3\Documents\repos\code-examples-node\node_modules\docusign-esign\node_modules\jsonwebtoken\sign.js:189:16)
at generateAndSignJWTAssertion (C:\Users\BrownJ3\Documents\repos\code-examples-node\node_modules\docusign-esign\src\ApiClient.js:62:16)
at exports.requestJWTUserToken (C:\Users\BrownJ3\Documents\repos\code-examples-node\node_modules\docusign-esign\src\ApiClient.js:890:19)
at _DsJwtAuth._getToken [as getToken] (C:\Users\BrownJ3\Documents\repos\code-examples-node\lib\DSJwtAuth.js:85:33)
at log (C:\Users\BrownJ3\Documents\repos\code-examples-node\lib\DSJwtAuth.js:174:33)
at _DsJwtAuth.DsJwtAuth.login (C:\Users\BrownJ3\Documents\repos\code-examples-node\lib\DSJwtAuth.js:184:5)
at commonControllers.login (C:\Users\BrownJ3\Documents\repos\code-examples-node\lib\commonControllers.js:36:16) {
library: 'PEM routines',
function: 'get_name',
reason: 'no start line',
code: 'ERR_OSSL_PEM_NO_START_LINE```
Run Code Online (Sandbox Code Playgroud)
Pav*_*atý 21
如果您确实拥有@Matt King DS 建议的有效 PEM 结构,但您仍然收到此错误,则新行可能会导致错误。
如果您使用dotenv,则从文档中:
多行值
如果您需要多行变量,例如私钥,现在支持带换行符的(>= v15.0.0):
Run Code Online (Sandbox Code Playgroud)PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- ... Kh9NV... ... -----END DSA PRIVATE KEY-----"或者,您可以双引号字符串并使用 \n 字符:
Run Code Online (Sandbox Code Playgroud)PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END DSA PRIVATE KEY---
我在AWS lambda中也遇到了这个错误。上述方法对我不起作用。我必须在 lambda 中使用不带双引号的 env 变量,并使用 \n 而不是换行符,并且在代码中我必须将 \n 替换为 \n,如下所示:
process.env.MY_PRIVATE_KEY.replace(/\\n/g, '\n')
Run Code Online (Sandbox Code Playgroud)
Jef*_*ian 20
您可以在此处验证您的证书: https: //www.sslchecker.com/certdecoder。
就我而言,我粘贴错误,漏掉了一个破折号:
- -----BEGIN CERTIFICATE-----
+ ----BEGIN CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
请注意,前五个破折号至关重要。
如果您不想粘贴到未知站点,您可以尝试以下命令,感谢@Adrian Gonzalez:
openssl x509 -in <cert-name>.pem -noout -text
Run Code Online (Sandbox Code Playgroud)
小智 17
这通常意味着 PEM 文件缺少关键部分已经开始的指示符。
PEM 文件的结构如下:
Intitial Data to be processed
-----Begin <Type>-----
Key Information
-----End <Type>-----
Run Code Online (Sandbox Code Playgroud)
这些文件的标准可以在这里找到:https : //tools.ietf.org/html/rfc7468
您能否确认您正在使用的 PEM 文件中是否存在 -----Begin / End 行?请不要在此处发布实际文件,如果它们存在于 PEM 中,我们将希望您使用 DocuSign 打开一个支持案例,以便我们保留任何必要的私人数据以进行故障排除。
如果您在 Angular CLI 中遇到此问题,请确保您的 ssl 密钥路径有效。
运行时遇到同样的问题:
ng serve --ssl true --ssl-cert ./ssl/server.crt --ssl-key ./ssl/server.key
事实证明我的路径无效。
| 归档时间: |
|
| 查看次数: |
18732 次 |
| 最近记录: |