我知道这里有很多类似的问题,但经过几个小时的阅读后,我无法找到解决方案。所以:
我正在尝试使用jwk-to-pem使用jsonwebtoken签署JSON网络令牌。我之前已经实现了这一点,但现在相同的代码不起作用。使用生成的jwt.sign
致电pem
后,我获得error:0906D06C:PEM routines:PEM_read_bio:no start line
。
我知道常见的原因包括错误的换行符,如\r
或一般错误的格式。我实际上甚至挖掘了核心nodejs代码并发现the line抛出了这个错误。
无数的调整和尝试都没有带来任何解决方案。具体做法是:
\n
-----BEGIN PUBLIC KEY-----
或-----BEGIN RSA PUBLIC KEY-----
\n
作为最后一个字符pem
字符串写入磁盘并使用节点fs
重新读取它。pem
文件与多个其他文件进行了比较,例如多个编辑器,例如:使用vi -b
或正则表达式。pem
内容的原始文件缓冲区移至jwt.sign
以及pem.toString('utf8')
以及每个其他字符串,这些字符串受到节点<支持/ LI>
pem
文件并将其提供给jwt.sign
。具体来说:ssh-keygen -t rsa -b 2048 -f jwtRS256.key
openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.pem
我在这里缺少什么?我没想到的可能原因是什么?
答案 0 :(得分:0)
我找到了一个非常简单的解释:我错误地使用公共而不是私钥。 openssl / crypto引发的错误非常容易引起误解。
使用私人pem /键,签名按预期工作。