未进行 SSL 连接尝试时,MongoDB 抱怨 SSL 握手

Posted

技术标签:

【中文标题】未进行 SSL 连接尝试时,MongoDB 抱怨 SSL 握手【英文标题】:MongoDB complaining about SSL handshake when SSL connection attempt is not being made 【发布时间】:2017-08-08 08:24:51 【问题描述】:

我尝试过使用官方的 mongo Docker 镜像和 khezen/mongo,当我尝试建立未加密的 HTTP 连接时,我收到了相同的错误消息:

AssertionException handling request, closing client connection: 17133 SSL handshake requested, SSL feature not available in this build

这是来自 khezen/mongo 的信息。官方的 mongo 图片给出了一个稍微不同的错误:

AssertionException handling request, closing client connection: 17132 SSL handshake received but server is started without SSL support

当官方 mongo 镜像从 docker-compose.yml 使用自定义命令 (mongod --sslMode allowSSL --sslPEMKeyFile /data/db/mongodb.pem) 启动时:

SSL: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request

现在,这一切都在尝试从 Postman 发出以下请求:

模式:POST

网址:http://localhost:27017/lasdf?client=asdf

数据负载:


    "gargen": "flagren",
    "jiminy": 
        "crickets": 1,
        "isChirping": false
    ,
    "blargen": "fargle",
    "_id": "a96c2a4ec6fb4a8dbe2305687eb0e50b"

有趣的是,当我将“http”更改为“https”时,我没有收到任何错误消息,也没有任何响应,当然数据库也没有更改。

更奇怪的是,我 am 能够通过 mongo-express docker 映像访问数据库。它的默认配置不会向 mongodb 发出 HTTPS 请求,因为当我将自定义命令更改为“--sslMode requireSSL”时,它无法连接。

容器中安装的MongoDB版本为3.4.2。

【问题讨论】:

我刚刚测试了mongo官方的3.2和3.0标签,得到了同样的响应。 【参考方案1】:

此特定错误不会产生任何问题。 尝试在 Postman 上使用正确的端口,服务器正在接受请求。 你可以忽略错误

【讨论】:

以上是关于未进行 SSL 连接尝试时,MongoDB 抱怨 SSL 握手的主要内容,如果未能解决你的问题,请参考以下文章

unixodbc 和 netezza ODBC 驱动程序问题(未定义符号:SSL_connect)

Mysql Workbench 连接 ssl 未启用

未找到 Android SSL 连接的信任锚

PHP Web套接字未在SSL中连接

javax.net.ssl.SSLPeerUnverifiedException:主机名未验证:

将 Heroku App 连接到 Atlas MongoDB 云服务