MongoDB使用SSL

1. MongoDB对SSL的支持情况

MongoDB社区版本不支持SSL,企业版提供对SSL的支持。
MongoDB源代码中包含SSL的实现,可以自己编译带SSL的MongoDB。

MongoDB支持客户端与mongos、mongod之间的SSL通信,以及replica set和sharded集群成员之间的SSL通信。
MMS支持SSL。

目前Python, Java, Ruby, Node.js, .NET, C, C++驱动都支持SSL。
mongo shell支持SSL。

MongoDB各类工具同样支持SSL,包括:
- mongodump
- mongoexport
- mongofiles
- mongoimport
- mongooplog
- mongorestore
- mongostat
- mongotop

2. 编译MongoDB的SSL版本

编译MongoDB的SSL版本依赖以下软件:
- build-essential
- scons
- git-core
- libssl-dev
- boost libs

从github上下载MongoDB的源代码:
git clone git://github.com/mongodb/mongo.git

可以使用git命令切换到想要编译的版本。

执行以下命令编译安装:
scons -j 4 --ssl all
scons -j 4 --ssl --prefix=/usr install
其中-j表示并行编译,后面紧跟的数字表示线程数。 --prefix表示安装MongoDB的根目录。

3. 配置MongoDB使用SSL

要部署启用SSL的MongoDB首先要有经过CA签名的有效证书。
可以使用openssl制作证书,具体可以参考http://www.cnblogs.com/chinabrle/p/4238637.html,其中的【6. 使用OPENSSL建立CA和签发证书】。
要启用SSL,必须有一个包含公钥证书和私钥的.pem文件。
如果已经有了公钥证书和私钥文件,使用下面命令将它们合并到一个文件中。
cat mongodb-cert.key mongodb-cert.crt > mongodb.pem

1)配置mongos和mongod
有如下参数,可以通过命令参数或配置文件的方式设置。具体可参考http://docs.mongodb.org/manual/tutorial/configure-ssl/。

--sslMode arg 设置SSL的操作模式,有如下模式:
disabled 禁止SSL
allowSSL 服务器之间不使用SSL,客户端连接同时接收SSL和非SSL连接
preferSSL 服务器之间使用SSL,客户端连接同时接收SSL和非SSL连接
requireSSL 仅使用SSL
--sslPEMKeyFile arg 指定SSL使用的PEM文件
--sslPEMKeyPassword arg 给出PEM文件的密码(如果生成秘钥时设置了密码)
--sslClusterFile arg 服务器集群内部SSL认证使用的PEM文件
--sslClusterPassword arg 服务器集群内部SSL认证使用的PEM文件的密码(如果生成秘钥时设置了密码)
--sslCAFile arg 指定CA证书文件
--sslCRLFile arg SSL撤销证书列表
--sslWeakCertificateValidation 允许客户端连接不提供证书
--sslAllowInvalidHostnames 允许客户端证书不匹配域名
--sslAllowInvalidCertificates 允许客户端连接使用无效的证书
--sslFIPSMode 启动时激活FIPS 140-2模式(http://docs.mongodb.org/manual/tutorial/configure-fips/)

2)配置mongo
有如下参数,可以通过mongo命令参数设置。具体可参考http://docs.mongodb.org/manual/tutorial/configure-ssl-clients/。

--ssl 使用SSL连接
--sslCAFile arg 指定CA证书文件
--sslPEMKeyFile arg 指定SSL使用的PEM文件
--sslPEMKeyPassword arg 给出PEM文件的密码(如果生成秘钥时设置了密码)
--sslCRLFile arg SSL撤销证书列表
--sslAllowInvalidHostnames 允许服务端证书不匹配域名
--sslAllowInvalidCertificates 允许客户端连接使用无效的证书
--sslFIPSMode 启动时激活FIPS 140-2模式(http://docs.mongodb.org/manual/tutorial/configure-fips/)

3)各语言驱动使用SSL的方法请参照帮助文档。
http://docs.mongodb.org/manual/tutorial/configure-ssl-clients/

 

posted @ 2015-01-21 16:29  davidli  阅读(8724)  评论(0编辑  收藏  举报