7

我现在正在寻找一种集成 OpenSSL 和 Node.js 的方法。

我的目标是:

  • 我想独立于平台,因此解决方案应该适用于 OS X、Linux 和 Windows。
  • 我想避免不必要的磁盘操作。例如,私钥可能不在文件中,而是在数据库中(可能是一个愚蠢的例子,但让我们认为这是一个有效的要求)。
  • 我想支持创建密钥、csrs、签署 csrs、创建 ca 证书……所有证书的东西,从头到尾。

现在我考虑的选项是:

  • 使用集成在 Node.js 中的 OpenSSL 库。不幸的是,加密模块不提供证书的东西。
  • 使用外部模块使用 OpenSSL 库。不幸的是,我不知道该怎么做,可能是由于缺少 C/C++ 知识。
  • 使用 OpenSSL 二进制文件作为子进程。鉴于 OpenSSL 可用,这应该适用于所有平台。这不是很好,但它有效。

问题 #1:正如我所写,我对如何直接访问与 Node.js 捆绑在一起的 OpenSSL 库一无所知。我将如何处理这个?

目前,我坚持使用二进制文件作为子进程。不幸的是,这要求所有的东西,比如私钥等等,要么作为文件给出(我明确地想避免),要么我使用 /dev/stdin 交出所有东西(这在 Windows 上不起作用)。

问题2:我该如何处理?#1的解决方案也能解决这个问题吗?

4

1 回答 1

2

The answer to question #1 is that you cannot. Without bindings, you can only access the functions exposed by nodejs.

Unfortunately there doesn't seem to be a way work around for /dev/stdin in windows. Namedpipes would be an option but nodejs does not support them. You may be able to have nodejs launch openssl.exe in interactive mode and send commands through stdin, and read the output through stdout but this seems very inefficient.

So the answer is question #2 is that you cannot deal with the windows problem.

Writing your won binding seems to be the only option. It's actually not so difficult - something I'm sure you could get collaborators to help with.

于 2015-01-17T23:08:10.093 回答