当前位置:首页 > 数据库 > mongodb ssl详细配置说明

mongodb ssl详细配置说明

2022年09月16日 18:06:07数据库5

mongodb ssl详细配置说明

在mac上安装mongodb 3.6的过程中,如果只是简单的安装官方文档通过brew或通过下载压缩文件进行安装的话,我们会发现实际上mongod进程正常启动成功,但当我们使用mongo进行本地连接时,实际上是连接不到本地服务器的,显示的错误信息为:

Failed global initialization: InvalidSSLConfiguration: Error enumerating certificates: The specified item could not be found in the keychain.

那么如何解决这个问题呢,或者说我们如何对mongdb进行SSL的相关配置呢,请参考下面的内容

先期准备

  1. 首先当然是通过brew或下载安装包的方式安装mongodb;
  2. 确保openssl命令可用(mac上是默认安装的);
  3. 我们先创建一个目录,用于存储我们在进行SSL所产生和需要的一些文件(下文中所有的命令都要在此目录中完成);

进入正题

生成根证书

openssl req -out ca.pem -new -x509 -days 3650 -subj "/C=CN/ST=BeiJing/O=bigdata/CN=root/emailAddress=yangxc@163.com"

参数说明
-new:表示生成一个新证书签署请求
-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
-out:证书的保存路径
-days:证书的有效期限,单位是day(天),默认是365天

在这个生成过程中,会提示输入一个密码,请牢记,否则追悔莫及(别问我是怎么知道的)
mongodb ssl详细配置说明 _ JavaClub全栈架构师技术笔记

生成服务器端PEM文件

  1. 使用RSA加密算法生成一个服务端私钥文件(OpenSSL通常使用PEM(Privacy Enbanced Mail)格式来保存私钥)构建私钥的命令如下:

    openssl genrsa -out server.key 2048
    

    参数说明
    genrsa —— 使用RSA算法产生私钥
    out——输出文件的路径
    2048——指定私钥长度

  2. 根据密钥文件生成一个证书申请文件(csr文件),构建命令如下:

    openssl req -key server.key -new -out server.req -subj "/C=CN/ST=BeiJing/O=bigdata/CN=server1/CN=localhost/emailAddress=yangxc@163.com"
    

    参数说明
    req——执行证书签发命令
    -new——新证书签发请求
    -key——指定私钥路径
    -out——输出的csr文件的路径
    -subj——证书相关的用户信息(subject的缩写)

  3. 根据证书申请文件生成CA的服务端证书文件

    openssl x509 -req -in server.req -CA ca.pem -CAkey privkey.pem -CAcreateserial file.srl -out server.crt -days 3650
    

    参数说明
    -CA——指定CA证书的路径
    -CAkey——指定CA证书的私钥路径
    -CAcreateserial——表示创建证书序列号文件,创建的序列号文件默认名称为-CA,指定的证书名称后加上.srl后缀

    在创建申请文件的过程中需要我们输入根证书的私钥密码(就是我们在生成根证书中输入的密码):
    mongodb ssl详细配置说明 _ JavaClub全栈架构师技术笔记

  4. 合并证书和私钥成PEM文件

    cat server.key server.crt > server.pem
    
  5. 验证服务端证书

    Openssl verify -CAfile ca.pem server.pem
    

    如果显示如下信息,则服务器端证书创建成功:
    mongodb ssl详细配置说明 _ JavaClub全栈架构师技术笔记

生成客户端PEM文件

  1. 使用RSA加密算法生成一个客户端私钥文件

    openssl genrsa -out client.key 2048
    

    参数说明
    genrsa —— 使用RSA算法产生私钥
    out——输出文件的路径
    2048——指定私钥长度

  2. 根据密钥文件生成一个证书申请文件

    openssl req -key client.key -new -out client.req -subj "/C=CN/ST=BeiJing/O=bigdata/CN=client1/emailAddress=yangxc@163.com"
    

    参数说明
    req——执行证书签发命令
    -new——新证书签发请求
    -key——指定私钥路径
    -out——输出的csr文件的路径
    -subj——证书相关的用户信息(subject的缩写)

  3. 根据证书申请文件生成CA的客户端证书文件:

    openssl x509 -req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial ca.srl -out client.crt -days 3650
    

    参数说明
    -CA——指定CA证书的路径
    -CAkey——指定CA证书的私钥路径
    -CAserial——指定证书序列号文件的路径(这里使用在创建服务器端证书文件时创建的序列号文件即可)

    在此过程中,我们还是需要输入我们根证书的密码,即我们创建根证书时输入的密码。

  4. 合并证书及私钥文件成PEM文件

    cat client.key client.crt > client.pem
    
  5. 验证客户端证书

    openssl verify -CAfile ca.pem client.pem
    

    如果显示如下信息,则代表客户端证书创建完成:
    mongodb ssl详细配置说明 _ JavaClub全栈架构师技术笔记
    到目前为止,我们完成了证书的创建过程,下面我们开始进行mongodb的ssl配置吧。

配置mongodb的ssl支持

  1. 首先需要对mongodb服务器进行设置,这些设置可以在调用mongod启动mongodb服务器时,通过命令行参数进行指定,也可以通过配置文件进行指定,配置文件的默认位置是/usr/local/etc/目录下的mongod.conf。配置内容如下:
    net:
      bindIp: 127.0.0.1
      ssl:
        mode: requireSSL
        PEMKeyFile: /Users/yangxiaochen/keys/server.pem
        CAFile: /Users/yangxiaochen/keys/ca.pem
        allowInvalidHostnames: true
    
    注意
    这里PEMKeyFile和CAFile中的文件路径,一定指向我们在上面步骤中生成的文件。
    这时我们就可以通过如下命令,启动mongodb:
    mongod --config /usr/local/etc/mongod.conf 
    
  2. 在启动完mongodb数据库后,可以通过如下命令,使用mongo shell连接mongodb数据库:
    mongo --sslAllowInvalidCertificates --sslAllowInvalidHostnames --ssl --sslPEMKeyFile /Users/yangxiaochen/keys/client.pem --sslCAFile /Users/yangxiaochen/keys/ca.pem --host localhost
    
    这样我们就可以通过mongo shell连接到本地的mongodb服务器上了,如下图所示:
    mongodb ssl详细配置说明 _ JavaClub全栈架构师技术笔记

作者:yangxcsky
来源链接:https://blog.csdn.net/qq_20996551/article/details/105263451

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/42060.html

标签: MongoDB
分享给朋友:

“mongodb ssl详细配置说明” 的相关文章

趣味编程|手写一个集成多数据源mongodb的 starter

趣味编程|手写一个集成多数据源mongodb的 starter

关注公众号“AI码师”领取2021最新面试资料一份,公众号内回复“源码”,获取本项目源码 【前言】 主演:老王(技术总监),小码(本猿) 老王:小码啊,我们项目中需要使用到mongodb,你集成下吧,完成了和我说下。...

springboot集成mongoDB遇到的一些坑

1.当mongoDB设置了账号密码时,且设置的db为admin(角色为root),此时登录且操作都是OK的,连接可视化工具进行各种操作也是ok的,但是springboot项目里面却是一直超时 原因:设置的账号密码是admin数据库的,然后连接的是自己的其他数据库(cloud...

mongodb二进制安装与yum安装

一.什么是mongodb       MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能 最丰富,最像关...

springboot给mongodb添加索引

最近项目中,需要用到mongodb,然后有一个定时任务每天都会新建表,但是数据量又很大,查询的时候很慢,因此需要在新建表的时候给表添加索引 //简易例子 String collectionName = "t_user"; Index index = new Index();...

springboot整合mongodb changestream

前言 changestream是monggodb的3.6版本之后出现的一种基于collection(数据库集合)的变更事件流,应用程序通过db.collection.watch()这样的命令可以获得被监听对象的实时变更 想必对mysql主从复...

Centos 使用yum安装MongoDB 4.0

Centos 使用yum安装MongoDB 4.0

1.配置MongoDB的yum源 创建yum源文件: #cd /etc/yum.repos.d  #vim mongodb-org-4.0.repo  添加以下内容:(我们这里使用阿里云的源) [mngodb-org] nam...

mongodb与mysql命令对比

mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关...

Centos7下yum安装mongodb

  简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点...

WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)

WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)

这是泥瓦匠的第105篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-5-thymeleaf-mong...

win10+mongodb安装配置

win10+mongodb安装配置

刚入职新公司,用的mongodb,所以最近开始学习研究mongodb。 mongo的入门学习资料在http://www.runoob.com/mongodb/mongodb-tutorial.html即可。 win10下本地安装mongodb:   首先到官网下载安装...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。