mongodb - 通过 docker-compose 使用 SSL 构建 mongodb
问题描述
在 docker 容器中使用 SSL 连接到 mongoDB 时出现问题
我已按照此链接上的指南进行操作,然后尝试使用 SSL
https://ritesh-yadav.github.io/tech/docker-instance-of-mongodb-with-ssl-support/
和
MongoDB Self-为 mongodb 构建 docker 容器签名 SSL 连接:SSL 对等证书验证失败
我想通过 docker compose 使用以下配置文件构建 mongodb:
- mongod.conf
net:
ssl:
CAFile: /home/mongodb/ssl/rootCA.pem
PEMKeyFile: /home/mongodb/ssl/mongodb-server.pem
mode: requireSSL
disabledProtocols: "TLS1_0,TLS1_1"
allowConnectionsWithoutCertificates: true
storage:
journal:
enabled: true
- 码头工人撰写文件
version: '3'
services:
mongoDB:
build:
context: .
image: mongoDB:latest
container_name: mongoDB
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: pass
ports:
- "27017:27017"
- 泊坞窗文件
FROM mongo:3.4-xenial
COPY scripts /home/mongodb/scripts
COPY ssl /home/mongodb/ssl
COPY mongod.conf /home/mongodb
WORKDIR /home/mongodb
RUN ["chmod", "+x", "/home/mongodb/scripts/"]
RUN ["chmod", "+x", "/home/mongodb/scripts/run.sh"]
RUN ["chmod", "+x", "/home/mongodb/scripts/setup_user.sh"]
CMD ["/home/mongodb/scripts/run.sh"]
EXPOSE 27017
- 运行.sh
#!/bin/bash
sleep 5
chown -R mongodb:mongodb /home/mongodb
nohup gosu mongodb mongod --dbpath=/data/db &
nohup gosu mongodb mongo admin --eval "help" > /dev/null 2>&1
RET=$?
while [[ "$RET" -ne 0 ]]; do
echo "Waiting for MongoDB to start..."
mongo admin --eval "help" > /dev/null 2>&1
RET=$?
sleep 2
done
bash /home/mongodb/scripts/setup_user.sh
gosu mongodb mongod --dbpath=/data/db --config mongod.conf -auth
- setup_user.sh
#!/bin/bash
echo "************************************************************"
echo "Setting up users..."
echo "************************************************************"
# create root user
nohup gosu mongodb mongo db_name --eval "db.createUser({user: 'admin', pwd: 'pass', roles:[{ role: 'root', db: 'db_name' }]});"
# create app user/database
nohup gosu mongodb mongo db_name --eval "db.createUser({ user: 'user', pwd: 'pass', roles: [{ role: 'readWrite', db: 'db_name' }]});"
echo "************************************************************"
echo "Shutting down"
echo "************************************************************"
nohup gosu mongodb mongo admin --eval "db.shutdownServer();"
当我使用 docker-compose up 创建数据库后在 docker 容器中运行此命令时
mongo --port 27017 -u admin -p pass --authenticationDatabase db_name --ssl --sslPEMKeyFile /home/mongodb/ssl/mongodb-server.pem --sslCAFile /home/mongodb/ssl/rootCA.pem --host localhost
然后我收到:
MongoDB shell version v3.4.20
connecting to: mongodb://localhost:27017/
2019-04-16T08:13:55.296+0000 E NETWORK [thread1] SSL peer certificate validation failed: self signed certificate
2019-04-16T08:13:55.297+0000 E QUERY [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: self signed certificate :
connect@src/mongo/shell/mongo.js:240:13
@(connect):1:6
exception: connect failed
我做错什么了吗?
解决方案
推荐阅读
- ios - SwiftUI - How to avoid to refresh a List when a state var from the same struct is modified
- sql - SQLite - 使用独特的非 PK 列作为 FK 的任何长期缺点?
- ruby-on-rails - 在 Ruby on Rails 表单上使用 datalist 显示名称但传递 id 参数
- amazon-web-services - 无效的参数值:名为 *** 的 AWS 环境对于此操作处于无效状态。必须准备好
- c# - 使一个类只能从另一个类使用
- scala - 鉴于 bindAndHandle 方法采用 Flow 而不是 Route 类型的第一个参数,Scala 程序如何编译?
- aws-glue - 如何使用 AWS java SDK 使用 AWS 粘合作业生成自动脚本
- php - 在没有客户端库的php中调用函数
- angular - 从子内部组件关闭模态
- android - 在 ObjectBox 中使用 List 而不是 ToMany