因此,作为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'获取更多信息
我在这里缺少什么?
答案 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"