从Node.js访问OpenSSL的不同方法

时间:2013-02-23 16:45:04

标签: node.js openssl

我正在寻找一种方法将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上不起作用)移交所有内容。 / p> 问题2:我怎么处理这个问题? #1的解决方案也能解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

问题#1的答案是你不能。如果没有绑定,则只能访问nodejs公开的函数。

不幸的是,似乎没有办法解决Windows中的/ dev / stdin问题。 Namedpipes是一个选项,但nodejs不支持它们。您可以让nodejs以交互模式启动openssl.exe并通过stdin发送命令,并通过stdout读取输出,但这似乎非常低效。

所以答案是问题#2是你无法处理windows问题。

编写你的赢了绑定似乎是唯一的选择。它实际上并不那么困难 - 我确信你可以让合作者帮忙。