2013-02-23 27 views
6

OpenSSLとNode.jsをしばらく統合する方法を探しています。Node.jsからOpenSSLにアクセスするための異なるアプローチ

私の目標は、次のとおりです。

  • 私はプラットフォームに依存しないようにしたい、それゆえソリューションは、OS X、Linux、およびWindows上で動作するはずです。
  • 不必要なディスク操作を避けたい。たとえば、秘密鍵はファイル内ではなくデータベース内にある可能性があります(愚かな例かもしれませんが、これを有効な要件と見なしましょう)。
  • 鍵の作成、csrsの署名、csrsの署名、ca証明書の作成、すべての証明書の処理をサポートします。

今、私が検討しているオプションは次のとおりです。

  • はNode.js.内に統合されたOpenSSLライブラリを使用します残念ながら、暗号モジュールは証明書を提供しません。
  • 外部モジュールを使用してOpenSSLライブラリを使用します。残念ながら、私はC/C++での知識が不足しているため、これを行う方法がわかりません。
  • OpenSSLバイナリを子プロセスとして使用します。 OpenSSLが利用可能であることを考えると、これはすべてのプラットフォームで機能するはずです。それはうまくないですが、それは動作します。

質問#1:私が書いたように、Node.jsにバンドルされているOpenSSLライブラリに直接アクセスする方法については、ほとんど考えていません。どのように私はこれにアプローチするのですか?

現時点では、子プロセスとしてバイナリを使用しています。残念なことに、これは秘密鍵などのすべてのものがファイルとして与えられていること(私は明白に避けたい)か、/ dev/stdin(Windowsでは動作しない)を使ってすべてを渡すことを要求します。

質問#2:どうすればこの問題に対処できますか? #1の解決策もこの問題を解決するでしょうか?

+0

答えは「nodejs(C++の知識が含まれています)のためのバインディングを書く方法を学ぶ」と答えていると思います。 – thejh

+0

これは問題が解決するかどうかです。 –

+2

私もこれに興味があります。解決策が見つかった場合や、Node.jsのOpenSSLバインディングを書く手助けが必要な場合は、教えてください。 – antimeme

答えて

2

質問1の答えはできません。バインディングなしでは、nodejによって公開されている関数にしかアクセスできません。

残念ながら、Windowsでは/ dev/stdinの回避策がないようです。 Namedpipesはオプションですが、nodejsはそれらをサポートしていません。 nodejsがopenssl.exeを対話モードで起動し、stdinを介してコマンドを送信し、stdoutを介して出力を読み取らせることができますが、これは非常に非効率的です。

答えは質問#2はあなたが窓の問題に対処できないということです。

あなたの勝利の拘束を書くことが唯一の選択肢のようです。実際にはそれほど難しいことではありません。共同作業者を助けることができると確信しています。

+1

パーフェクト、ありがとう:-) –

関連する問題