【问题标题】:How can I resolve the issue for the SSLHandshakeFailed in MongoDB?如何解决 MongoDB 中 SSLHandshakeFailed 的问题?
【发布时间】:2020-07-18 02:55:40
【问题描述】:

我对 MongoDB 很陌生。事实上,我是 MEAN Stack 的新手。我已经在我的 Mac 上成功安装了 MongoDB 服务器。在我运行以下命令后:

mongod

服务器在端口27017 上启动。我尝试通过在 chrome 窗口中输入 localhost URL 来访问服务器:

http://127.0.0.1:27017/

我在运行服务器的终端窗口中收到以下错误:

SSLHandshakeFailed: SSL handshake received but server is started without SSL support.

为了解决这个问题,我用谷歌搜索了这个错误,并尝试了来自thisthis 链接的以下建议:

openssl genrsa -des3 -out rootSSL.key 2048 这将创建一个.key 文件。那么,

openssl req -x509 -new -nodes -key rootSSL.key -sha256 -days 1024 -out rootSSL.pem 这将创建一个.pem 文件。

我什至在Keychain Access 中的System 中添加了.pem 文件。

一些链接建议我应该创建一个server.cnf 文件,一些建议我应该创建一个域证书。

有人还在关于 SO 的问题中建议应该从 Postman 开始,但这也不起作用。

任何人都可以帮助我找出这个错误,因为所有其他建议都非常令人困惑,而且所有建议似乎都在拐弯抹角。

【问题讨论】:

  • 为什么要从浏览器访问MongoDB?使用一些客户端,如 robo3T 或 mongo compass,我建议检查 (medium.com/better-programming/…) 或最好是 (stackoverflow.com/questions/28336163/…),您也可以利用 mongo-atlas (mongodb.com/cloud/atlas) 创建免费的 Mongo 数据库
  • 您应该查看一些通常命名为 server.js 或 main.js 或 index.js 的通用文件并检查您的代码在哪个端口上运行,27017 是 mongo 运行的位置但不是代码。如果这个问题是关于 mongo 连接问题的,请检查上面的链接..

标签: mongodb mean-stack


【解决方案1】:

如果您收到此错误:

SSLHandshakeFailed: SSL handshake received but server is started without SSL support.

...您可能访问的是https://127.0.0.1:27017/ 而不是http://127.0.0.1:27017/。检查你的拼写。

此外,HTTP 接口不适用于最新的 MongoDB 版本。 The documentation 说:

在 3.6 版中更改:MongoDB 3.6 删除了已弃用的 HTTP 接口和 MongoDB 的 REST API。

当我在我的 MongoDB 服务器上尝试这个时,我得到:

% curl http://localhost:27017
It looks like you are trying to access MongoDB over HTTP on the native driver port.

因此,除了验证服务器是否已启动之外,通过网络浏览器访问它并没有什么用处。

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 2020-02-16
    • 2021-10-05
    • 2011-10-01
    • 2019-03-19
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多