如果文件作为 URL 中的参数传递,mongo 客户端不会读取 CA 文件

问题描述

我正在尝试使用 AWS DocumentDB。

这个命令工作正常:

mongo --tls --host my.cluster-random.ap-south-1.docdb.amazonaws.com:27017 --tlsCAFile rds-combined-ca-bundle.pem --username mongo --password 'supersecure'

此命令不会:

mongo 'mongodb://mongo@my.cluster-random.ap-south-1.docdb.amazonaws.com:27017/?tlsCAFile=rds-combined-ca-bundle.pem&tls=true'

我收到错误

SSL peer certificate validation Failed: unable to get local issuer certificate

我的印象是第二个案例文件没有被读取。如果我在第一个命令中输入了错误文件名 - 我会收到 OpenSSL 错误

Failed global initialization: InvalidSSLConfiguration cannot read certificate authority file: 

在第二种情况下,它就像根本无关紧要。 TLS 选项(如“忽略”)的任何组合也没有产生任何效果

我有点失落。有什么建议吗?

解决方法

嗯……无论出于什么原因,mongo shell 都不支持它。来自文档:

https://docs.mongodb.com/manual/reference/connection-string/

tlsCAFile - 此连接字符串选项不适用于 mongo shell。请改用命令行选项。