Forge.js导出RSA私钥pem格式总是无效怎么办?

闲人莉霞 阅读 43

我在用Forge.js生成RSA密钥对时,按照文档导出的pem格式总是被其他工具报错。明明参数都对,但生成的私钥文件好像格式不对。

我这样写的代码:


const forge = require('node-forge');
const key = forge.pki.rsa.generateKeyPair(2048);
const pem = forge.pki.privateKeyToPem(key.privateKey);

console.log(pem);
// 输出结果类似:-----BEGIN RSA PRIVATE KEY-----
// ...base64 data...
// -----END RSA PRIVATE KEY-----

但当我用openssl命令检查时提示错误:

openssl rsa -text -noout -in key.pem

报错信息是:

unable to load Private Key
140532490183872:error:0906D06C:PEM routines:PEM_read_bio:no start line:../crypto/pem/pem_lib.c:745:

试过把导出方式改成privateKeyToPemrsaPrivatePkcs1ToPem都不行,难道是密钥格式不兼容?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
Mr.鹤荣
Mr.鹤荣 Lv1
你导出的 PEM 格式没错,但 openssl rsa 默认期望 PKCS#8 格式,而 forge.js 输出的是 PKCS#1。用这个命令检查就行:

openssl rsa -text -noout -inform PEM -in key.pem


如果非要转成兼容性更好的 PKCS#8,用 openssl 转一下:

openssl pkcs8 -topk8 -nocrypt -in key.pem -out key_pkcs8.pem


或者在代码里直接生成标准格式就行了。
点赞 4
2026-02-08 23:07