MongoDB配置SSL安全連接

環境說明

  • Mongodb 3.4 docker容器

配置步驟

服務器端證書配置

服務器端證書配置

服務器端需兩個文件: ca.pemserver.pem

生成ca.pem

$ openssl req -out ca.pem -new -x509 -days 3650
# 此處會要求配置ca.pem密碼,後續將會用到

參數說明
-x509: 用於生成自簽證書,如果不是自簽證書則不需要此項
-days: 證書的有效期限,默認是365天

生成server.pem

# 生成服務器端私鑰
$ openssl genrsa -out server.key 2048
# 生成服務器端申請文件
$ openssl req -key server.key -new -out server.req
# 生成服務器端證書
$ openssl x509 -req -in server.req -CA ca.pem -CAkey privkey.pem -CAcreateserial -out server.crt -days 3650
# 合併服務器端私鑰和服務器端證書,生成server.pem
$ cat server.key server.crt > server.pem
# 校驗服務器端pem文件
$ openssl verify -CAfile ca.pem server.pem
server.pem: OK

服務器端配置

修改配置文件

mongodb的ssl配置默認是關閉的,需更改配置文件進行開啓

$ vi mongod.conf
net:
#  port: 27017
#  bindIp: 127.0.0.1
  ssl:
    # 必須使用ssl連接
    mode: requireSSL
    # 必須使用絕對路徑
    PEMKeyFile: /etc/server.pem
    # 必須使用絕對路徑
    CAFile: /etc/ca.pem
    # 允許不可用主機名
    allowInvalidHostnames: true
    # 允許使用自簽證書,如果使用自簽證書必須配置該項,否則會認證失敗
    allowInvalidCertificates: true

啓動MongoDB數據庫

$ docker run --name mongo_test -d --restart always \
  -p 27018:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=root \
  -v /data/mongo/mongod.conf:/etc/mongod.conf \
  -v /data/mongo/ca.pem:/etc/ca.pem \ 
  -v /data/mongo/server.pem:/etc/server.pem \
  mongo:3.4 --auth --master --config /etc/mongod.conf

客戶端證書配置

生成client.pem

# 生成客戶端私鑰
$ openssl genrsa -out client.key 2048
# 生成客戶端申請文件
$ openssl req -key client.key -new -out client.req
# 生成客戶端證書
$ openssl x509 -req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial ca.srl  -out client.crt -days 3650
# 合併客戶端私鑰和客戶端證書,生成client.pem
$ cat client.key client.crt > client.pem
# 校驗客戶端pem文件
$ openssl verify -CAfile ca.pem client.pem
client.pem: OK

測試連接

ca.pemclient.pem拷貝到客戶端主機,然後用navicat測試連接
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章