编辑:没什么问题。我是个白痴。以下设置是正确的。
我在 Windows 上建立了一个 mongodb (3.4) 实例,配置如下:
net:
port: 27017
ssl:
mode: preferSSL
PEMKeyFile: C:\...\mongodb.pem
CAFile: C:\...\mongodb.ca
allowConnectionsWithoutCertificates: true
该证书是针对特定域和通配符子域颁发的CA签名证书。
然后,我可以使用具有以下连接字符串的简单 C# 程序从本地计算机连接到数据库:
mongodb://user:password@hostname?ssl=true
并且运行正常。客户端未使用证书。
我摆弄了参数,它确实看起来好像是使用 SSL 进行连接:
- 如果我切换到
mode:requireSSL
并设置ssl=false
连接字符串,则无法连接,这是预期的 - 如果我连接到证书中未包含的域,我会得到
The remote certificate is invalid according to the validation procedure.
,这也是预期的 - 我在 mongo 日志中看到的唯一错误/警告是
no SSL certificate provided by peer
- 这是预料之中的;客户端没有使用证书,这就是我配置的原因allowConnectionsWithoutCertificates: true
然而,当我使用 Wireshark 查看流量时,我可以检查所有数据包并以纯文本形式读取发送到服务器和从服务器发送的数据。数据包详细信息窗格中没有 SSL/TLS 层,只有以太网、IP、TCP 和 Mongo Wire 协议。
我的问题是:这是预料之中的吗?流量不应该被加密,从而无法在 Wireshark 中读取吗?