1

開発環境用の TLSv1.2 証明書を生成するために、独自の認証局を作成しました。私のCAには、ルート証明書、ルートによって署名された中間証明書、および中間証明書によって署名された多数の「リーフ」証明書があります。このリーフ証明書の 1 つを使用して、arangodb サーバーに安全に接続します。ブラウザーにルート/中間証明書をインストールした後、web インターフェイスに正常にアクセスしてデータベースと対話できるため、arangod プロセスは正常に実行されているようです。

https://github.com/arangodb/arangojs#new-databaseで説明されているように、arangojs javascript ドライバーを使用して nodejs API サーバーをデータベースに接続しようとすると、問題が発生します。

自己署名 HTTPS 証明書をサポートする必要がある場合は、次のように、証明書を agentOptions に追加する必要がある場合があります。

agentOptions: {
  ca: [
    fs.readFileSync('.ssl/sub.class1.server.ca.pem'),
    fs.readFileSync('.ssl/ca.pem')
  ]
}

agentOption 構成は、自己署名証明書を使用し、次の場合に機能します。

agentOptions: {
  ca: [
    fs.readFileSync('db.crt.pem')
  ]
}

しかし、自分の CA 署名付き証明書を使用すると失敗し、次の場合:

agentOptions: {
  ca: [
    fs.readFileSync('interm.crt.pem')
  ]
}

また、次のようないくつかの他の ca 設定を試しました。 [interm + root]証明書バッファを渡します(上記のように、順序を交換しました)が、これはどれも機能していないようです。私は常に arangojs から非常に長いエラー メッセージを受け取りますが、最初は UNABLE_TO_VERIFY_LEAF_SIGNATURE

調べてみると、node-ssl-root-cas npm モジュールへの参照が見つかりましたが、自分の CA を使用しているため、なぜそれを使用する必要があるのか​​わかりません (私も試してみましたが、どちらも機能しませんでした)。

私の問題はhttps://github.com/arangodb/arangojs/issues/39に似ているようですが、解決策は上記のドキュメントと 1:1 で同期しているようで、まだ機能しませんでした。

結局のところ、これは arangojs の agantOptions の微妙な構成の問題だと思います。誰かが私に正しい設定を教えてもらえますか?

4

1 に答える 1

0

最終的に、以下を使用して安全な TLS 接続を確立することができました。

agentOptions: {
  ca: [
    fs.readFileSync('interm_root.crt.pem')
  ]
}

ここで、interm_root.crt.pem は中間証明書とルート証明書を連結したもので、次のように取得されます。

猫 interm.crt.pem root.crt.pem > interm_root.crt.pem

なんらかの理由で、テストの最初のラウンドで急いで連結を正しく行うことができませんでした。

とにかくこれが他のarangojsユーザーに役立つことを願っています

于 2017-07-07T17:06:43.577 に答える