You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB 7.0(Ubuntu)开启认证后外部客户端连接失败求助

解决MongoDB 7.0远程/客户端连接失败问题

核心排查与修复步骤

1. 修正MongoDB绑定IP配置

默认情况下MongoDB仅监听127.0.0.1,导致外部客户端无法访问。修改mongod.conf配置文件:

net:
  port: 27017
  bindIp: 0.0.0.0  # 允许所有IP访问,也可指定特定IP列表如"127.0.0.1,你的公网IP"
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/mongodb/ssl/psmdb1.pem
    CAFile: /etc/mongodb/ssl/mongoCA.crt
security:  
  authorization: enabled  
  clusterAuthMode: x509

修改后重启MongoDB服务:

sudo systemctl restart mongod

2. 确保证书包含正确的SAN(主题备用名称)

MongoDB 4.2+要求SSL证书必须包含连接时使用的主机名/IP作为SAN,否则客户端会触发主机名验证失败。重新生成证书时添加SAN配置:

  • 创建openssl-san.cnf配置文件:
[req]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
C = CN
ST = 你的省份
L = 你的城市
O = 你的组织
OU = 你的部门
CN = mongodb-server

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = 你的主机名
IP.1 = 127.0.0.1
IP.2 = 你的公网IP
  • 重新生成CSR和证书:
# 生成新的CSR文件
openssl req -new -nodes -newkey rsa:4096 -keyout mongossl1.key -out mongossl1.csr -config openssl-san.cnf

# 用CA签署证书
openssl x509 -CA mongoCA.crt -CAkey mongoCA.key -CAcreateserial -req -days 365 -in mongossl1.csr -out mongossl1.crt -extensions v3_req -extfile openssl-san.cnf

# 合并密钥与证书为PEM文件
cat mongossl1.key mongossl1.crt > psmdb1.pem
  • 更新证书文件并修正权限:
sudo cp psmdb1.pem /etc/mongodb/ssl/
sudo chown mongodb:mongodb /etc/mongodb/ssl/psmdb1.pem
sudo chmod 600 /etc/mongodb/ssl/psmdb1.pem

重启MongoDB服务生效。

3. 开放防火墙端口

如果Ubuntu启用了ufw防火墙,需放行27017端口:

sudo ufw allow 27017/tcp
sudo ufw reload

若为云服务器,需同步在云平台安全组添加入站规则,允许27017端口的TCP流量。

4. 验证客户端证书路径与权限

确保客户端使用的证书路径正确,且权限符合要求:

sudo chmod 644 /etc/ssl/new/mongoCA.crt
sudo chmod 600 /etc/ssl/new/psmdb1.pem

5. 匹配连接主机与证书信息

连接时的--host参数必须与证书中SAN字段包含的主机名/IP完全一致,否则会触发验证失败。

验证连接

完成以上调整后,重新执行连接命令测试:

mongo --tls --tlsCAFile /etc/ssl/new/mongoCA.crt --tlsCertificateKeyFile /etc/ssl/new/psmdb1.pem --authenticationMechanism MONGODB-X509 --authenticationDatabase '$external' --host <你的公网IP> --port 27017

内容的提问来源于stack exchange,提问作者NedStarkOfWinterfell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:07:45