我跟着这教程创建根 CA 证书,然后使用它为 mongod 服务器签名密钥。我按照此配置运行 monogd文档:
net:
ssl:
mode: requireSSL
PEMKeyFile: /home/user/device.pem
CAFile: /home/user/rootCA.pem
allowInvalidCertificates: true
allowInvalidHostnames: true
由于连接失败,我添加了最后两个。
我正在使用这些线路来连接:
./mongo <host>:<port>/<db> -u <user> -p <pwd> --ssl --sslAllowInvalidCertificates --sslCAFile ~/Downloads/rootCA.pem
./mongo <host>:<port>/<db> -u <user> -p <pwd> --ssl --sslAllowInvalidCertificates
./mongo <host>:<port>/<db> -u <user> -p <pwd> --ssl
但所有这些都会产生:
MongoDB shell version v3.4.2
connecting to: mongodb://<host>:<port>/<db>
2017-03-30T14:39:15.307+0300 E NETWORK [thread1] SSL peer certificate validation failed: self signed certificate
2017-03-30T14:39:15.311+0300 E QUERY [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: self signed certificate :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
知道我做错了什么吗?我知道这是一个自签名证书,非常感谢您的帮助
答案1
在你的蒙哥配置文件,您指定SSL 模式是requireSSL
。这意味着mongod
服务器,仅有的使用并接受 TLS/SSL 加密连接。
您的客户端mongo
shell 需要指定--sslPEM密钥文件传递客户端 PEM 文件。另请参阅mongo shell SSL 配置或者教程:为客户端配置 SSL。
由于连接失败,我添加了最后两个。
在安全性方面,启用配置时要格外小心。请参阅两个参数的说明以了解它们的用途: --allowInvalidCertificates和 --allowInvalidHostnames