无法使用SSL连接到Mongodb


  • Windows 10 Pro x64
  • Mongodb 4.4
  • 指南针GUI

我将Mongodb设置为正常(没有安全性(,并验证一切正常。现在正在尝试添加TLS/SSL。我遵循了的指示

https://docs.mongodb.com/manual/appendix/security/appendixA-openssl-ca/https://docs.mongodb.com/manual/appendix/security/appendixB-openssl-server/

没有错误。一切都成功了。使用验证pems

openssl verify -CAfile mongodb.pem mongodb01.pem
mongodb01.pem: OK

更新了我的配置文件:

net:
port: 27017
bindIp: mongodb01.xxx.com
tls:
mode: requireTLS
certificateKeyFile: C:Program FilesMongoDBServer4.4binmongodb01.pem
CAFile: C:Program FilesMongoDBServer4.4binmongodb.pem

CA证书是为*.xxx.com创建的,服务器证书是为mongodb01.xxx.com创建。注意:mongodb101.xxx.com在我的主机文件中伪造为127.0.0.1。我以前做过很多次,当它们都在同一台机器上时,假dns名称技巧确实有效。

然后我用运行mongodb

mongod --config "C:Program FilesMongoDBServer4.4binmongod.cfg"

但当我尝试时:

openssl s_client -connect mongodb01.xxx.com:27017
verify error:num=20:unable to get local issuer certificate
verify error:num=21:unable to verify the first certificate

编辑:

所以我取得了一些进步。我不认为MongoDB正在获取CAFile。当我将根证书和中间证书添加到mongodb01.pem中(并且所有3个证书都用同一密钥签名(时,证书链通过了,但它返回了一个自签名证书错误(正如预期的那样(。

我还没有尝试过从Java中调用它,我试图先让它在Compass中工作。然而,Compass抱怨自签名证书。我试图将证书放入我信任的存储中,但Compass仍然拒绝连接。

您需要向s_client提供CA证书,除非证书由知名CA颁发,并且其CA证书在openssl附带的捆绑包中(假设存在这样的捆绑包(。

使用-CApath-CAfile选项可以指定CA证书。

openssl通常没有任何默认的根证书颁发机构。

尝试使用-CAfile选项(如(通过CA

openssl s_client -CAfile mongodb.pem -connect mongodb01.orionsoftware.com:27017

请注意,mongodb.pem不应包含用于此用途的私钥。

相关内容

  • 没有找到相关文章

最新更新