@[TOC](mongodb生成自签名证书以及配置SSL(亲测有效) 版本-5.0.6

一直以来都是向大神学习,今天也做回大神分享,哈哈!!几个小时的努力不算白费。

一、自签名证书生成

1、生成根证书ca.pem

1、生成CA私钥(ca.key)(不加密)
openssl genrsa -out ca.key 2048
2、生成CA证书签名请求(ca.csr)
openssl req -new -key ca.key -out ca.csr
在这里插入图片描述
3、生成自签名CA证书(ca.pem), 直接100年有效, 免费白嫖
openssl x509 -req -days 36500 -in ca.csr -signkey ca.key -out ca.pem
到此我们的根证书已经生成完成。

2、生成服务器端PEM文件

1、生成server私钥(server.key)(不加密)
openssl genrsa -out server.key 2048
2、生成server证书签名请求(server.csr)
openssl req -new -key server.key -out server.csr
输入内容和上图保持一致
3、使用ca证书签署服务端csr以生成服务端证书(server.cert)
openssl ca -days 36500 -in server.csr -out server.crt -cert ca.pem -keyfile ca.key
出现以下错误时,touch /etc/pki/CA/index.txt
在这里插入图片描述
出现以下错误时执行:touch /etc/pki/CA/serial echo 01 > /etc/pki/CA/serial
在这里插入图片描述
解决完错误之后再次对证书进行签名如下图:
在这里插入图片描述
4、删掉server.crt中的certificate信息
在这里插入图片描述
5、合并证书和私钥成PEM文件 ,构建命令如下:
cat server.key server.crt > server.pem

3、验证自签名证书是否成功

1、openssl verify -CAfile ca.pem server.pem
在这里插入图片描述

二 、mongodb SSL配置

1、将生成的ca.pem和server.pem放置到mongodb的目录下

在这里插入图片描述

2、mongd.conf ssl 相关配置

在这里插入图片描述

3、重新启动mongo服务

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongod.conf![在这里插入图片描述](https://img-blog.csdnimg.cn/1886b3cd2f844338aab13024f63229ed.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGFwcHlMZWFybmVyTA==,size_20,color_FFFFFF,t_70,g_se,x_16)

出现以上警告,不想改可忽略,主要是说配置中使用的变量不要用了,mongo高版本不适用这些参数
可进行修改,修改方法如下:
在这里插入图片描述

改完重新启动服务,先杀掉原先服务再启动
在这里插入图片描述
如下图启动服务成功:
在这里插入图片描述

三、通过客户端连接服务器

1、连接命令如下:

./mongo --tls --tlsAllowInvalidCertificates --host 127.0.0.1 --port 28017在这里插入图片描述

2、数据库初始化,设置为主模式

rs.initiate()

在这里插入图片描述
退出mongo服务可以使用 exit 命令

致此,mongo数据库ssl配置成功。

四、mongodb 数据库集群搭建

1、制作cluster证书:如上述制作server证书一样

       最终命名为cluster.pem

2、复制mongo文件两份,分别为mongodb1、mongodb2

在这里插入图片描述

3、按下图分别修改配置文件

/usr/local/mongodb/conf/mongod.conf
/usr/local/mongodb1/conf/mongod.conf
/usr/local/mongodb2/conf/mongod.conf
由于只有一台设备:使用三个端口:28017、28018、28019
在这里插入图片描述

4、启动mongo,mongo1 和mongo2服务

**注意:第三步骤完成之后,需要将mongo服务全部杀掉, 执行
rm -rf /usr/local/mongo/data/*
rm -rf /usr/local/mongo1/data/*
rm -rf /usr/local/mongo2/data/* **
**作用:清除之前数据,为集群起动做准备,不清除数据会导致集群添加失败。**

起动mongo三个服务
在这里插入图片描述
服务启动完成,如下图
在这里插入图片描述

4、将mongodb1和mongodb2加入集群

在这里插入图片描述
执行结果如下图所示:
连接主节点mongodb, 进入/usr/local/mongodb/bin目录, 执行
./mongo --tls --tlsAllowInvalidCertificates --host 127.0.0.1 --port 28017
rs.initiate() ,
rs.add(“”)
在这里插入图片描述

5、查看集群信息

rs.status()  //用于查看集群信息

在这里插入图片描述

五、配置mongo数据库授权用户

参看如下链接:
mongoDB创建用户名密码登录和其他一些设置

mongodb用户权限管理最全攻略:用户的创建、查看、删除与修改,mongodb入坑之旅

六,验证复制集

1、主节点写入,从节点读

使用db.test.find() 从节点读数据时会报错如下:
在这里插入图片描述
**解决办法:**执行 rs.slaveOk() (高版本被丢弃),或者执行 rs.secondaryOk(), 意思是允许从节点读

2、主节点写入数据

db.test.insert({“a”:“2”})
主节点写入数据成功
在这里插入图片描述
db.test.find()
从节点读取数据成功
在这里插入图片描述

将命令行转换成配置文件命令

例子: ./mongod --tlsCRLFile TT --outputConfig

在这里插入图片描述

Mongodb 参考手册

mongodb英文参考手册

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐