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/

MongoDB使用SSL的更多相关文章

  1. MongoDB的SSL实现分析

    1. OPENSSL接口封装 MongoDB封装了OPENSSL的SSL通信接口,代码在mongo/util/net目录.主要包括以下几个方面: 1) SSL配置参数,在ssl_options(.cp ...

  2. [转载]MongoDB C# 驱动教程

    本教程基于C#驱动 v1.6.x . Api 文档见此处: http://api.mongodb.org/csharp/current/. 简介 本教程介绍由10gen支持的,用于MongoDB的C# ...

  3. MongoDB最佳实践中文手册

    背景:查阅了一下MongoDB的相关文档,发现中文文档还是比较少的,工作中需要用到MongoDB,而这本<MongoDB最佳实践>是很好的选择,所以就把这本手册翻译了一下,其中生涩的专业用 ...

  4. MongoDB C# 驱动教程

    C# 驱动版本 v1.6.x 本教程基于C#驱动 v1.6.x . Api 文档见此处: http://api.mongodb.org/csharp/current/. 简介 本教程介绍由10gen支 ...

  5. 快速了解MongoDB

    简介 MongoDB是一款为广泛的现代应用程序设计的高性能.可扩展.分布式数据库系统.MongoDB可用于不同规模大小的组织,为那些对系统低延迟.高吞吐量以及可持续性有很高要求的应用提供稳定关键的服务 ...

  6. 基于nodejs将mongodb的数据实时同步到elasticsearch

    一.前言 因公司需要选用elasticsearch做全文检索,持久化存储选用的是mongodb,但是希望mongodb里面的数据发生改变可以实时同步到elasticsearch上,一开始主要使用ela ...

  7. 关于MongoDB的简单理解(二)--Java篇

    一.声明 本文依赖于 MongoDB JVM DRIVERS 4.1 版本编写. 本文案例依赖于 Maven 项目管理工具. 二.本文主要讲解哪些内容? 如何连接到MongoDB 通过TLS/SSL连 ...

  8. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  9. seat

    Install packages sudo apt-get update sudo apt-get install -y curl curl -sSL https://git.io/vVHhe | b ...

随机推荐

  1. PB中掉用Run以后,等Run的程序关闭以后才会执行后边的语句

    OleObject wsh integer li_rc CONSTANT integer MAXIMIZED = CONSTANT integer MINIMIZED = CONSTANT integ ...

  2. P1230: [Usaco2008 Nov]lites 开关灯

    嗯嗯,这是一道线段树的题,询问区间内亮着的灯的个数,我们可以把区间修改的线段树改一下,原本的求和改成若有奇数次更改则取反(总长度-亮着的灯个数),而判断是否奇数次只要数组加一个delta的值,upda ...

  3. nodejs笔记二--文件I/O;

    一.写入文件: fs.writeFile(filename, data, callback),数据参数可以是string或者是Buffer,编码格式参数可选,默认为"utf8",回 ...

  4. TF/IDF(term frequency/inverse document frequency)

    TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明. 一. TF/IDF描述单个term与特定document的相 ...

  5. jquery动态加载JS【方法getScript】的改进

    http://www.cnblogs.com/cuitsl/archive/2012/11/15/2771549.html

  6. TCL随记(2)

    file函数: file dirname name 返回文件所在目录 file exists name 测试文件是否存在,存在返回1,否则返回0 file extension name 返回文件扩展名 ...

  7. 面向对象版js分页

    基于前一个js分页,我将代码改成一个面向对象版的js分页,代码如下 http://peng666.github.io/blogs/pageobj <!DOCTYPE html> <h ...

  8. GBDT(MART)

    转自:http://blog.csdn.net/w28971023/article/details/8240756 在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下: GBDT(Gra ...

  9. C++ Template之函数模版

    函数模版的定义: template <typename T> T const& max(const T& a,const T b) { return a > b ? ...

  10. 2014 ACM/ICPC Asia Regional Guangzhou Online

    Wang Xifeng's Little Plot http://acm.hdu.edu.cn/showproblem.php?pid=5024 预处理出每个点八个方向能走的最远距离,然后枚举起点,枚 ...