从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。 其实并不困难 – 我相信你可以让合作者帮忙。