如何响应nodejs中的openssl提示

时间:2018-06-06 20:40:14

标签: node.js

我正在尝试使用带有节点js的openssl从私钥文件中删除密码。

节点js代码是:

cmd = exec('/usr/bin/openssl', [
    'rsa',
    '-in',
    `${process.cwd()}/privkey.pem`, '-out', `/home/pratik/newPrivateKey.pem`
]);
cmd.stdin.write("password", 'utf8');

我提到了this SO个问题。但就我而言,在控制台上我只看到true作为输出。没有创建文件。我缺少什么?

1 个答案:

答案 0 :(得分:1)

您需要使用child_process.spawn,然后使用{ stdio: "inherit" }通过您的节点脚本转发其stdin和stdout。

const child_process = require('child_process');
const openssl = child_process.spawn('openssl', [
  'rsa',
  '-in',
  "/Users/my_user/.ssh/my_key", '-out', "/Users/my_user/.ssh/unlocked_key"
], { stdio: "inherit" });

或者,对于非交互式版本,您不希望它提示输入密码:

const child_process = require('child_process');
const password = "somepassword";
const openssl = child_process.exec('openssl', [
  'rsa',
  '-in', "/Users/my_user/.ssh/my_key",
  '-out', "/Users/my_user/.ssh/output_key",
  '-passin', `pass:${password}`
]);