我在节点版本:v10.14.1上,并使用以下代码生成keyPair:
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: ''
}
}, (err, publicKey, privateKey) => {
// Do stuff
});
这将创建以下格式的公钥:
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
不幸的是,有时需要不同的格式。就我而言,要将公钥上传到AWS,需要OpenSSH格式,我相信是这样的:
ssh-rsa
...
如何将RSA公钥格式转换为OpenSSH格式或直接使用生成generateKeyPair()
?
node-sshpk软件包可能会帮助您:https : //github.com/joyent/node-sshpk
您可以使用pubKey.toBuffer()
或更复杂的方法pubKey.toBuffer('ssh')
。或者pubKey.toString('ssh')
,如果您需要它作为字符串。
在您的示例中,代码应如下所示:
const { generateKeyPair } = require('crypto');
const sshpk = require('sshpk');
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
}
}, (err, publicKey, privateKey) => {
if(err){
// handle Error
}
else{
const pemKey = sshpk.parseKey(publicKey, 'pem');
const sshRsa = pemKey.toString('ssh');
console.log(ssh_rsa_2);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句