【发布时间】:2018-10-18 21:23:26
【问题描述】:
我知道这里有很多类似的问题,但经过数小时的阅读后,我找不到我的解决方案。所以:
我正在尝试使用jwk-to-pem 使用jsonwebtoken 签署JSON Web 令牌。我以前已经实现了这一点,但现在相同的代码不起作用。在使用生成的pem 调用jwt.sign 后,我得到error:0906D06C:PEM routines:PEM_read_bio:no start line。
我知道常见的原因包括错误的换行符,如\r 或通常错误的格式。实际上,我什至翻遍了核心 nodejs 代码,发现the line 抛出了这个错误。
无数次的调整和尝试都没有解决。具体来说:
- 我确保所有换行符都是
\n - 我为第一行和最后一行尝试了不同的字符串,例如
-----BEGIN PUBLIC KEY-----或-----BEGIN RSA PUBLIC KEY----- - 我确保最后一行包含
\n作为最后一个字符 - 我尝试使用节点的
fs将pem字符串写入磁盘并重新读取它。 - 我使用多个编辑器将
pem文件与其他几个文件进行了比较,例如使用vi -b或正则表达式。 - 我尝试将带有
pem内容的原始文件缓冲区交给jwt.sign和pem.toString('utf8')以及每个节点支持的其他字符串 - 我尝试使用 linux 工具生成一个随机的
pem文件并将其提供给jwt.sign。具体来说:ssh-keygen -t rsa -b 2048 -f jwtRS256.keyopenssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.pem
我在这里缺少什么?这有什么我没想到的可能原因?
【问题讨论】:
标签: javascript node.js openssl cryptography json-web-token