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

Gol*_*den 6 openssl node.js

我正在寻找一种方法来集成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的解决方案也能解决这个问题吗?

smr*_*mde 2

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

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

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

编写您的韩元绑定似乎是唯一的选择。实际上这并不困难——我相信你可以得到合作者的帮助。