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. objective-c自学总结(一)---面向对象

    本人大二本科在读,利用一个月多一点的时间对OC语言基础进行了自学,在下一阶段UI学习开始之前, 对这一阶段的自学进行一些总结.在此特别感谢刘晓斌学长和无线互联3G学院 首先说一下对OC的整体感觉,这是 ...

  2. SQL Server数据库与max degree of parallelism参数

    我们今天主要向大家讲述的是SQL Server数据库中的max degree of parallelism参数,当 SQL Server 数据库在具N个微处理器或是 CPU 的计算机上运行时,它将为每 ...

  3. Ngrok 内网穿透神器(转载)

    mac上配置web服务: http://note.rpsh.net/posts/2013/11/27/osx-10-9-apache-server-php-mysql/ Ngrok 内网穿透神器 由于 ...

  4. php 设计API之优化 记

    服务器端 可以考虑使用rest实现,清晰url:put http://aa.com/news 客户端 curl实现muliti机制,实现多线程并发,节省多接口调用的时间 curl实现keepalive ...

  5. Codeforces Round #131 (Div. 2) B. Hometask dp

    题目链接: http://codeforces.com/problemset/problem/214/B Hometask time limit per test:2 secondsmemory li ...

  6. SqlServer with递归查询的使用

    1.数据准备假定有一个表DiGui,有两个字段Id int ParentId intId ParentId4 05 07 02 18 515 59 714 1130 1523 1541 18104 2 ...

  7. 引擎设计跟踪(九.14.2e) DelayLoaded DLLs (/DELAYLOAD)

    关于DLL的delay load: http://msdn.microsoft.com/en-us/library/151kt790.aspx 最近在做GLES的shader compiler, 把现 ...

  8. [Bug]The maximum array length quota (16384) has been exceeded while reading XML data.

    写在前面 在项目中,有客户反应无法正常加载组织结构树,弄了一个测试的程序,在日志中查看到如下信息: Error in deserializing body of reply message for o ...

  9. SSH无密码验证

    一.安装和启动SSH协议 sudo yum install ssh sudo yum install rsync service sshd restart 启动服务 (rsync是一个远程数据同步工具 ...

  10. 驱动笔记 - Makefile

    ifneq ($(KERNELRELEASE),) obj-m := hello.ohello-objs := main.o add.o else KDIR := /lib/modules/2.6.1 ...