7

しばらくの間、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の解決策もこの問題を解決しますか?

4

1 に答える 1

2

質問1の答えは、できないということです。バインディングがないと、nodejsによって公開されている関数にのみアクセスできます。

残念ながら、Windowsで/ dev/stdinを回避する方法はないようです。Namedpipesはオプションですが、nodejsはそれらをサポートしていません。nodejsでopenssl.exeをインタラクティブモードで起動し、stdinを介してコマンドを送信し、stdoutを介して出力を読み取ることができる場合がありますが、これは非常に非効率的です。

したがって、答えは質問2です。これは、Windowsの問題に対処できないということです。

獲得したバインディングを書くことが唯一の選択肢のようです。実際にはそれほど難しいことではありません。共同作業者に手伝ってもらえると確信しています。

于 2015-01-17T23:08:10.093 に答える