Forge.js导出RSA私钥pem格式总是无效怎么办?
我在用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:
试过把导出方式改成privateKeyToPem和rsaPrivatePkcs1ToPem都不行,难道是密钥格式不兼容?
openssl rsa默认期望 PKCS#8 格式,而 forge.js 输出的是 PKCS#1。用这个命令检查就行:如果非要转成兼容性更好的 PKCS#8,用 openssl 转一下:
或者在代码里直接生成标准格式就行了。