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

我正在寻找一种将OpenSSL和Node.js集成一段时间的方法。

我的目标是:

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

现在我考虑的选项是:

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

问题1:正如我写的,我没有丝毫的想法直接访问与Node.js捆绑在一起的OpenSSL库。 我将如何处理这个?

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

问题2:我怎么处理这个问题? 第一个解决scheme也能解决这个问题吗?

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

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

所以答案是#2的问题是,你不能处理Windows的问题。

写下你赢得的约束似乎是唯一的select。 其实并不困难 – 我相信你可以让合作者帮忙。