与crypto.createSign一起使用密码保护的私钥

我正在尝试使用node.jsencryptionAPI和一个密码保护的私钥来签署和validation消息,它使我了解到:

> var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex'); Enter PEM pass phrase: 

在这一点上节点就locking了。 我似乎无法find一个选项来以编程方式传递密码。

更新:我解决了这个问题

我对这个问题的解决方法刚刚落地核心 , 它还没有正式发布,但是当它发生时,你可以像这样使用它:

 var sig = crypto.createSign('RSA-SHA256').update('psst').sign({ key: pk, passphrase: 'password' }, 'hex'); 

一旦这个版本登陆,将会更新。 在v0.11.8发布。

原始答案:

这里有一个可行的解决scheme,你可以在应用程序启动时解密私钥,然后正常使用它,例如:

 var childProcess = require('child_process'), crypto = require('crypto'); var pk; var sign = function () { var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex'); console.log(sig); }; childProcess.exec('openssl rsa -in /path/to/private_key -passin pass:your_password', {}, function (err, stdout, stderr) { if (err) throw err; pk = stdout; // Save in memory for later use sign(); });