web-dev-qa-db-ja.com

MongoDB:SSLピア証明書の検証に失敗しました:自己署名証明書

this チュートリアルに従って、両方のルートCA証明書を作成し、それを使用してmongodサーバーのキーに署名しました。これに従って、この構成でmonogdを実行します doc

  net:
    ssl:
      mode: requireSSL
      PEMKeyFile: /home/user/device.pem
      CAFile: /home/user/rootCA.pem
      allowInvalidCertificates: true
      allowInvalidHostnames: true

接続エラーが発生したために追加した最後の2つ。

接続にこれらの行を使用しています:

./mongo <Host>:<port>/<db>  -u <user> -p <pwd> --ssl --sslAllowInvalidCertificates --sslCAFile ~/Downloads/rootCA.pem

./mongo <Host>:<port>/<db>  -u <user> -p <pwd> --ssl --sslAllowInvalidCertificates

./mongo <Host>:<port>/<db>  -u <user> -p <pwd> --ssl

しかし、これらはすべて次のものを生み出します。

MongoDB Shell version v3.4.2
connecting to: mongodb://<Host>:<port>/<db>
2017-03-30T14:39:15.307+0300 E NETWORK  [thread1] SSL peer certificate validation failed: self signed certificate
2017-03-30T14:39:15.311+0300 E QUERY    [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: self signed certificate :
connect@src/mongo/Shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

私が間違っていることは何ですか?私はそれが自己署名証明書であることを知っていますあなたの助けに感謝します

こちらの回答も試してみました: https://stackoverflow.com/questions/21297139/how-do-you-sign-certificate-signing-request-with-your-certification-authority/21340898#21340898

5
sagioto

mongod 構成ファイルで、 SSLモードrequireSSLに指定します。これは、mongodサーバーonlyがTLS/SSL暗号化接続を使用および受け入れることを意味します。

クライアントのmongo Shellは、クライアントのPEMファイルを渡すために -sslPEMKeyFile を指定する必要があります。 mongo Shell SSL configuration または Tutorial:configure SSL for clients も参照してください。

接続エラーが発生したために追加した最後の2つ。

セキュリティに関しては、構成の有効化に特に注意してください。目的については、2つのパラメーターの説明を参照してください: -allowInvalidCertificates および -allowInvalidHostnames

3
Wan Bachtiar