MongoDB:获取 SSL 对等证书验证失败:自签名证书

sag*_*oto 5 ssl openssl ssl-certificate mongodb

我按照教程创建了一个根 CA 证书,然后使用它为 mongod 服务器签名。我使用此配置运行monogd,遵循此文档

  net:
    ssl:
      mode: requireSSL
      PEMKeyFile: /home/user/device.pem
      CAFile: /home/user/rootCA.pem
      allowInvalidCertificates: true
      allowInvalidHostnames: true
Run Code Online (Sandbox Code Playgroud)

由于连接失败,我添加的最后 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
Run Code Online (Sandbox Code Playgroud)

但所有这些都会产生:

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
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?我知道这是一个自签名证书将感谢您的帮助

还尝试按照此处的答案进行操作:https : //stackoverflow.com/questions/21297139/how-do-you-sign-certificate-signing-request-with-your-certification-authority/21340898#21340898

小智 3

mongod配置文件中,将SSL 模式指定为requireSSL. 这意味着mongod服务器使用和接受 TLS/SSL 加密连接。

在您的情况下,客户端mongoshell 需要指定--sslPEMKeyFile来传递客户端 PEM 文件。另请参阅mongo shell SSL 配置教程:为客户端配置 SSL

由于连接失败,我添加了最后两个。

关于安全性,启用配置时要格外小心。请参阅两个参数的说明以了解它们的用途: --allowInvalidCertificates--allowInvalidHostnames

  • 您确定客户必须有证书吗?我知道只有当我也指定 CAFile 参数时才会出现这种情况。关于安全性,当然,我只是试图尽可能地放松限制以使连接正常工作,然后一旦我弄清楚出了什么问题就再次限制它,并且它不是生产或根本没有任何数据。 。 (2认同)