使用 TLS 运行 Mongodb 社区版

问题描述 投票:0回答:1

我正在尝试在 Windows 上启用 TLS 来设置 Mongodb Community Edition v7.0.12。禁用 TLS 后一切正常,但当我启用 TLS 时,Mongodb 将无法启动。我的服务器证书驻留在 Windows 证书存储区的 Personal 文件夹下。该证书由受信任的根证书存储中的 CA 证书进行签名。证书很好,它们与其他应用程序一起工作得很好。

我的 Mongodb 配置文件包含此部分:

net:    
   tls:       
      mode: requireTLS       
      certificateSelector: thumbprint="d169030077bd7b5347cb1723d9382b1e00242d90"

由于某种原因,它抱怨指纹字符串不是十六进制字符串。我也使用了该主题,但没有效果:

net:    
   tls:       
      mode: requireTLS       
      certificateSelector: subject="serverhostname"

此时我正在挠头。有人有一个可行的例子吗?谢谢!

mongodb ssl
1个回答
0
投票

在检查了 Mongodb 源代码后我终于弄清楚了这一点。为了使 TLS 通信正常工作,您需要做好一些准备工作。

首先,必须指定指纹,不带引号字符,这在文档中并不明显。第二件事是将

allowConnectionsWithoutCertificates
添加到配置文件中,否则连接客户端需要随请求提供 CA 证书,这有点奇怪。

就我而言,配置 TLS 的有效配置文件如下所示:

net:
  port: 27017
  bindIp: 0.0.0.0
  tls:
    mode: requireTLS
    certificateSelector: thumbprint=d169030077bd7b5347cb1723d9382b1e00242d90
    allowConnectionsWithoutCertificates: true

Mongodb 对配置文件中的制表符敏感,因此请使用空格字符代替空格。

第四件事是启动 Mongodb 时需要在命令行中添加

tlsUseSystemCA=true
。我的命令行如下所示:

mongod.exe --config="C:\Program Files\MongoDB\Server\7.0\bin\mongod.cfg" --setParameter tlsUseSystemCA=true

您现在可以使用以下连接字符串连接到 Mongodb 数据库:

mongodb://<hostname>:27017/?tls=true
© www.soinside.com 2019 - 2024. All rights reserved.