2013-02-23 167 views
6

我正在尋找一種將OpenSSL和Node.js集成一段時間的方法。從Node.js訪問OpenSSL的不同方法

我的目標是:

  • 我想成爲平臺獨立的,因此解決辦法應該在OS X,Linux和Windows上工作。
  • 我想避免不必要的磁盤操作。例如,私鑰可能不在文件中,而是在數據庫中(可能是一個愚蠢的例子,但讓我們認爲這是一個有效的要求)。
  • 我想支持創建密鑰,csrs,簽署csrs,創建ca certs,......所有證書的東西,從頭到尾。

現在我考慮的選擇是:

  • 使用其內部集成Node.js的OpenSSL庫不幸的是,加密模塊不提供證書。
  • 使用OpenSSL庫使用外部模塊。不幸的是,我不知道該怎麼做,可能是因爲C/C++缺少知識。
  • 使用OpenSSL二進制作爲子進程。鑑於OpenSSL可用,這應該適用於所有平臺。這不好,但它的工作原理。

問題1:正如我寫的,我沒有絲毫的想法直接訪問與Node.js捆綁在一起的OpenSSL庫。我會如何處理這個問題?

目前,我堅持使用二進制作爲子進程。不幸的是,這要求所有的東西,比如私鑰等都是作爲文件給出的(我明確想避免的),或者我使用/ dev/stdin(這在Windows上不起作用)提交所有東西。

問題2:我該如何處理?第一個解決方案是否也可以解決這個問題?

+0

我想答案是「學習如何編寫nodejs的綁定(包括C++的一些知識)」。 – thejh 2013-02-23 17:00:05

+0

接下來的問題是這是否能解決問題。 – 2013-02-23 17:44:41

+2

我也對此感興趣。如果你找到一個解決方案,或者你需要幫助編寫Node.js的OpenSSL綁定,請告訴我。 – antimeme 2013-04-25 16:36:29

回答

2

問題#1的答案是你不能。沒有綁定,你只能訪問nodejs公開的函數。

不幸的是,似乎沒有辦法解決/ dev/stdin在windows中的問題。 Namedpipes將是一個選項,但nodejs不支持它們。您可以讓nodejs以交互模式啓動openssl.exe並通過stdin發送命令,並通過stdout讀取輸出,但這看起來效率很低。

所以答案是問題#2是你無法處理windows問題。

編寫您的韓元綁定似乎是唯一的選擇。其實並不難 - 我相信你可以讓合作者幫忙。

+1

完美,謝謝:-) – 2015-01-19 07:10:38