启用TLS与身份认证后无法连接MongoDB的技术求助
问题:启用TLS与身份认证后无法连接MongoDB
MongoDB部署环境
我在Docker容器中运行MongoDB,已启用TLS/SSL、基于角色的访问控制(RBAC)及内部身份认证,部署概况如下:
- MongoDB版本:6.x(Docker运行)
- mongod.conf配置:
net: port: 27017 bindIp: 0.0.0.0 tls: mode: requireTLS certificateKeyFile: /etc/ssl/mongo.pem # 合并的证书与私钥文件 CAFile: /etc/ssl/ca.pem # 证书颁发机构文件 allowConnectionsWithoutCertificates: false security: authorization: "enabled" # 启用基于角色的访问控制(RBAC) keyFile: /etc/rs_keyfile # 副本集身份认证密钥文件路径 systemLog: destination: file path: /var/log/mongodb/mongod.log logAppend: true verbosity: 2
- 证书说明:
- mongo.pem:包含服务器证书与私钥
- ca.pem:包含签署mongo.pem的CA证书
- Docker Compose:MongoDB运行于Docker容器中,已用openssl生成所需PEM文件
MongoDB启动方式
通过Docker加载上述配置启动MongoDB,启动过程看似正常,但使用mongosh通过TLS连接时遇到问题。
连接错误信息
使用以下命令尝试连接:
mongosh --tls --tlsCAFile /etc/ssl/ca.pem --tlsCertificateKeyFile /etc/ssl/mongo.pem --host 127.0.0.1 --port 27017
收到错误:MongoServerSelectionError: connection to 127.0.0.1:27017 closed
即使添加tlsAllowInvalidHostnames参数,仍无法成功建立连接。
补充信息
已通过openssl verify和openssl s_client验证证书,证书有效。
日志中的错误
MongoDB日志中发现以下错误:
User assertion "NotYetInitialized: no replset config has been received" Unable to retrieve storageStats in $collStats stage :: caused by :: Collection [local.oplog.rs] not found.
疑问
- 证书配置:我生成或配置MongoDB证书的方式是否存在问题?
- 主机名问题:使用TLS进行本地连接时,如何正确解决“主机名不匹配”问题?
- 副本集配置:我未启用复制功能,但仍出现副本集相关错误,这是否与连接问题有关?
证书详情
以下是openssl x509 -in /etc/ssl/mongo.pem -noout -text的输出:
Certificate: Data: Version: 3 (0x2) Serial Number: 23:e7:a5:54:fa:d1:5f:12:7c:a7:5a:16:7c:63:50:23:16:39:a2:c9 Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, ST = UH, L = GO, O = NFA, OU = NFA, CN = NFA, emailAddress = example@email.com Validity Not Before: Sep 14 15:11:18 2024 GMT Not After : Sep 14 15:11:18 2025 GMT Subject: CN = mongo1 Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) 00:c5:46:e0:4f:f2:3c:14:0e:67:6c:e6:ee:60:37: ... Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: Key Encipherment, Data Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication X509v3 Subject Alternative Name: DNS:mongo1, IP Address:127.0.0.1, IP Address:0.0.0.0 X509v3 Subject Key Identifier: F1:EC:87:9E:4B:1C:5B:44:EA:91:68:45:2F:F3:20:44:B0:4D:22:69 X509v3 Authority Key Identifier: 17:40:89:67:A8:59:00:18:A4:E4:33:BD:F2:7A:2D:D0:16:C7:D2:78 Signature Algorithm: sha256WithRSAEncryption
内容的提问来源于stack exchange,提问作者Yaniv Dadon
相关产品推荐
相关产品推荐

