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/
MongoDB使用SSL的更多相关文章
- MongoDB的SSL实现分析
1. OPENSSL接口封装 MongoDB封装了OPENSSL的SSL通信接口,代码在mongo/util/net目录.主要包括以下几个方面: 1) SSL配置参数,在ssl_options(.cp ...
- [转载]MongoDB C# 驱动教程
本教程基于C#驱动 v1.6.x . Api 文档见此处: http://api.mongodb.org/csharp/current/. 简介 本教程介绍由10gen支持的,用于MongoDB的C# ...
- MongoDB最佳实践中文手册
背景:查阅了一下MongoDB的相关文档,发现中文文档还是比较少的,工作中需要用到MongoDB,而这本<MongoDB最佳实践>是很好的选择,所以就把这本手册翻译了一下,其中生涩的专业用 ...
- MongoDB C# 驱动教程
C# 驱动版本 v1.6.x 本教程基于C#驱动 v1.6.x . Api 文档见此处: http://api.mongodb.org/csharp/current/. 简介 本教程介绍由10gen支 ...
- 快速了解MongoDB
简介 MongoDB是一款为广泛的现代应用程序设计的高性能.可扩展.分布式数据库系统.MongoDB可用于不同规模大小的组织,为那些对系统低延迟.高吞吐量以及可持续性有很高要求的应用提供稳定关键的服务 ...
- 基于nodejs将mongodb的数据实时同步到elasticsearch
一.前言 因公司需要选用elasticsearch做全文检索,持久化存储选用的是mongodb,但是希望mongodb里面的数据发生改变可以实时同步到elasticsearch上,一开始主要使用ela ...
- 关于MongoDB的简单理解(二)--Java篇
一.声明 本文依赖于 MongoDB JVM DRIVERS 4.1 版本编写. 本文案例依赖于 Maven 项目管理工具. 二.本文主要讲解哪些内容? 如何连接到MongoDB 通过TLS/SSL连 ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- seat
Install packages sudo apt-get update sudo apt-get install -y curl curl -sSL https://git.io/vVHhe | b ...
随机推荐
- objective-c自学总结(一)---面向对象
本人大二本科在读,利用一个月多一点的时间对OC语言基础进行了自学,在下一阶段UI学习开始之前, 对这一阶段的自学进行一些总结.在此特别感谢刘晓斌学长和无线互联3G学院 首先说一下对OC的整体感觉,这是 ...
- SQL Server数据库与max degree of parallelism参数
我们今天主要向大家讲述的是SQL Server数据库中的max degree of parallelism参数,当 SQL Server 数据库在具N个微处理器或是 CPU 的计算机上运行时,它将为每 ...
- Ngrok 内网穿透神器(转载)
mac上配置web服务: http://note.rpsh.net/posts/2013/11/27/osx-10-9-apache-server-php-mysql/ Ngrok 内网穿透神器 由于 ...
- php 设计API之优化 记
服务器端 可以考虑使用rest实现,清晰url:put http://aa.com/news 客户端 curl实现muliti机制,实现多线程并发,节省多接口调用的时间 curl实现keepalive ...
- Codeforces Round #131 (Div. 2) B. Hometask dp
题目链接: http://codeforces.com/problemset/problem/214/B Hometask time limit per test:2 secondsmemory li ...
- SqlServer with递归查询的使用
1.数据准备假定有一个表DiGui,有两个字段Id int ParentId intId ParentId4 05 07 02 18 515 59 714 1130 1523 1541 18104 2 ...
- 引擎设计跟踪(九.14.2e) DelayLoaded DLLs (/DELAYLOAD)
关于DLL的delay load: http://msdn.microsoft.com/en-us/library/151kt790.aspx 最近在做GLES的shader compiler, 把现 ...
- [Bug]The maximum array length quota (16384) has been exceeded while reading XML data.
写在前面 在项目中,有客户反应无法正常加载组织结构树,弄了一个测试的程序,在日志中查看到如下信息: Error in deserializing body of reply message for o ...
- SSH无密码验证
一.安装和启动SSH协议 sudo yum install ssh sudo yum install rsync service sshd restart 启动服务 (rsync是一个远程数据同步工具 ...
- 驱动笔记 - Makefile
ifneq ($(KERNELRELEASE),) obj-m := hello.ohello-objs := main.o add.o else KDIR := /lib/modules/2.6.1 ...