使用 TLS(和相互 TLS)保护 MONGO

使用 TLS(和相互 TLS)保护 MONGO

按照MongoDB SSL 加密和 Spring 的驱动程序,我得到了 2.1.0 并且在构建它之后,它说它无法识别 sslOnNormalPorts、sslPEMKeyFile 或 sslPEMKeyPassword。

但是我看到了--keyFile,并使用了它(我必须从Base64编码密钥中删除前导和尾随的-----BEGIN RSA PRIVATE KEY----和-----END RSA PRIVATE KEY----,以及尾随的'==')。

现在,如果我启动 mongo shell,我的所有命令都可以正常工作(显示 dbs、使用 xyz、db.abc.find() 等)

如果我尝试指定主机和端口,我会得到:

mongo --host 192.168.1.100 --port 27017 MongoDB shell version: 2.1.0 connecting to: 192.168.1.100:27017/test

show dbs Mon Apr 30 21:37:37 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }

如果我添加 --ssl 标志来启动 mongo shell,它就会挂起。而 mongod 会输出:

Mon Apr 30 21:40:53 [initandlisten] options: { keyFile: "/Users/tshrestha/Downloads/key.pem" }
Mon Apr 30 21:40:53 [initandlisten] journal dir=/data/db/journal
Mon Apr 30 21:40:53 [initandlisten] recover : no journal files present, no recovery needed 
Mon Apr 30 21:40:53 [websvr] admin web console waiting for connections on port 28017
Mon Apr 30 21:40:53 [initandlisten] waiting for connections on port 27017
Mon Apr 30 21:41:16 [initandlisten] connection accepted from 192.168.1.102:64413 #1 (1 connection now open)
Mon Apr 30 21:41:53 [clientcursormon] mem (MB) res:14 virt:2419 mapped:0

我使用的是 Mac OSX 10.7

答案1

keyfile 选项用于 mongod 实例之间的身份验证,而不是 SSL - 它将精简的 SSL 密钥视为一串字符。您拥有的是一个非常长的密码,仅此而已。有关更多信息,请参见此处:

http://www.mongodb.org/display/DOCS/Security+and+Authentication

您缺少必须使用带有 ssl 标志的 scons 重新编译的部分。重新阅读此页面:

http://www.mongodb.org/display/DOCS/Building+for+OS+X

您需要按照那里的说明进行操作,直到到达以下部分:

scons all

对于启用 SSL 的构建,您将需要使用:

scons --ssl all

构建完成后,mongod 将识别您的 SSL 相关选项。注意 - 我在 Mac OS X 上多次执行此操作,没有出现问题。

相关内容