MongoDB:解析命令行时出错:无法识别的选项'--sslMode'

时间:2016-04-01 11:46:26

标签: mongodb ssl

因此,作为NoSQL世界的新手,我决定给mongodb一个试验,并下载了以下版本,我认为它支持ssl开箱即用:

db version v3.2.4
git version: e2ee9ffcf9f5a94fad76802e28cc978718bb7a30
allocator: tcmalloc
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64

所以当我跑

mongod --sslMode requireSSL --sslPEMKeyFile C:\data\keys\server-key.pem --sslCAFile C:\data\keys\ca-crt.pem

我收到以下错误消息:

  

解析命令行时出错:无法识别的选项'--sslMode'

     

尝试'mongod --help'获取更多信息

我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

在mongo-university的M001:MongoDB Basics课程上工作时面临同样的问题。 该课程的演示连接需要一个ssl连接,但我有mongo二进制文件,抛出了这个错误。

$ mongo "mongodb://primary:27017,replica1:27017,replica2:27017/test?replicaSet=Cluster0-shard-0" --ssl --authenticationDatabase admin --username <user_name> --password <password>
Error parsing command line: unrecognised option '--ssl'
try 'mongo --help' for more information

问题的根本原因是mongo版本中提供的community二进制文件不支持--ssl选项。 我下载了企业版的评估版,并成功连接了M001:demo mongo服务器。

更多详情请参阅mongo Jira问题SERVER:21622

答案 1 :(得分:0)

所选答案不再有效。在官方docker镜像4.2.0。 (目前最新)和4.0.1。在Dockerhub中,您可以分别设置标志--sslMode --tlsMode(尚未测试其他图像标签)。

先决条件

sudo docker volume create --name mongo-cert
LOCATION="$(sudo docker volume inspect mongo-cert | jq -r '.[0].Mountpoint')"
sudo openssl req -x509 -newkey rsa:4096 -keyout "$LOCATION/key.pem" -out "$LOCATION/cert.pem" -days 365 -nodes
touch $LOCATION/mongo.pem
cat $LOCATION/key.pem >> $LOCATION/mongo.pem
cat $LOCATION/cert.pem >> $LOCATION/mongo.pem

v4.2.0

sudo docker run --name mongo --rm -p 27017:27017 --mount source=mongo-cert,target="/cert" \
mongo:4.2.0 mongod \
--tlsMode "allowTLS" \
--tlsCertificateKeyFile "/cert/mongo.pem"

v4.0.1

sudo docker run --name mongo --rm -p 27017:27017 --mount source=mongo-cert,target="/cert" \
mongo:4.0.1 mongod \
--sslMode "allowSSL" \
--sslPEMKeyFile "/cert/mongo.pem"