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/

最新文章

  1. MonoGame教程
  2. Mac eclipse 导入文件夹
  3. 使用 jQuery Mobile 与 HTML5 开发 Web App —— HTML5 离线缓存
  4. iOS 用代码搭建UI界面实例
  5. Duang的成长——使用造字程序输入生僻字
  6. 《微信小程序七日谈》- 第二天:你可能要抛弃原来的响应式开发思维
  7. HDU 5692 线段树+dfs序
  8. FreeMarker页面中获得contextPath
  9. 【IHttpHandler】IHttpModule实现URL重写
  10. CentOS6.x安装配置nginx [转]
  11. HW1.4
  12. win7 snmp
  13. CloudStack 4.2 新功能:集成SNMP进行系统监控(原理篇)
  14. VS2010新建Web网站与新建Web应用程序的区别
  15. JavaScript 开发人员需要知道的简写技巧
  16. Python核心编程(网络编程)
  17. Tyche 2147 旅行
  18. 通用图片加载组件UniversalImageLoader
  19. 每天一个linux命令(7):mv
  20. springmvc接收前台(如ajax)传来的数组list,set等图文详解

热门文章

  1. 如何在Swing窗体增删组件后及时刷新显示新界面
  2. c++11并发程序设计(1)
  3. STL之multimap
  4. canvas画时钟
  5. 在Eclipse新建菜单中添加JSP
  6. openstack与VMware workStation的区别
  7. poj 1985 Cow Marathon 树的直径
  8. 【BZOJ】【1003】【ZJOI2006】物流运输trans
  9. 剑指offer--面试题21
  10. 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结