開発環境用の 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 の微妙な構成の問題だと思います。誰かが私に正しい設定を教えてもらえますか?