node.js暗号APIとパスフレーズで保護された秘密鍵を使用してメッセージに署名して検証しようとしています。これにより、次のようになります。
> var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex');
Enter PEM pass phrase:
そして、ノードはこの時点でロックアップします。プログラムでパスフレーズを渡すオプションが見つからないようです。
node.js暗号APIとパスフレーズで保護された秘密鍵を使用してメッセージに署名して検証しようとしています。これにより、次のようになります。
> var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex');
Enter PEM pass phrase:
そして、ノードはこの時点でロックアップします。プログラムでパスフレーズを渡すオプションが見つからないようです。
これに対する私の修正は coreに上陸したばかりで、まだ正式リリースされていませんが、リリースされたら次のように使用できます。
var sig = crypto.createSign('RSA-SHA256').update('psst').sign({
key: pk,
passphrase: 'password'
}, 'hex');
これがリリースされたら更新します。v0.11.8 リリースで上陸しました。
これが機能するソリューションです。アプリの起動時に秘密鍵を復号化し、通常どおり使用できます。次に例を示します。
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();
});