如何通过TLS连接添加MongoDB副本集成员?

问题描述 投票:0回答:1

另一个“很棒的”MongoDB 文档:

https://www.mongodb.com/docs/manual/reference/method/rs.add/

如果添加的成员有 TLS 连接怎么办? MongoDB 懒得解释这个。

rs0 [direct: primary] admin> rs.add({host: "mail.giftbutton.com:27017/?tls=true&tlsCAFile=/home/buryj/certsMongoMailer/intermRoot.pem&tlsCertificateKeyFile=/home%2Fburyj/certsMongoMailer/clientKey.pem"})
MongoServerError[InvalidReplicaSetConfig]: member: { host: "mail.giftbutton.com:27017/?tls=true&tlsCAFile=/home/buryj/certsMongoMailer/intermRoot.pem&tlsCertificateKeyFile=/home%2Fburyj/certsMongoMailer/clientKey.pem", _id: 1 } :: caused by :: Did not consume whole string.
rs0 [direct: primary] admin> rs.add({host: "mail.giftbutton.com --tls --tlsCAFile /home/buryj/certsMongoMailer/intermRoot.pem --tlsCertificateKeyFile /home/buryj/certsMongoMailer/clientKey.pem"})
MongoNetworkError: connection 2 to 51.89.216.247:27017 closed
admin> rs.add({host: "mail.giftbutton.com --tls --tlsCAFile=/home/buryj/certsMongoMailer/intermRoot.pem --tlsCertificateKeyFile=/home/buryj/certsMongoMailer/clientKey.pem"})
MongoNetworkError: connection 4 to 51.89.216.247:27017 closed

“连接关闭”是当 PRIMARY 刚刚死亡时。

任何有关如何做到这一点的想法都非常感谢!

mongodb replicaset
1个回答
0
投票

您没有像这样指定 TLS 选项:

rs.add({host: "mail.giftbutton.com:27017/?tls=true&tlsCAFile=/home/buryj/certsMongoMailer/intermRoot.pem&tlsCertificateKeyFile=/home%2Fburyj/certsMongoMailer/clientKey.pem"})

TLS 选项在配置文件(或命令行参数)中指定:

# network interfaces
net:
  port: 27017
  bindIpAll: true
  tls:
    mode: requireTLS
    certificateKeyFile: .../server.pem
    CAFile: /home/buryj/certsMongoMailer/intermRoot.pem
    clusterFile: /home/buryj/certsMongoMailer/clientKey.pem

security:
  clusterAuthMode: x509
  authorization: enabled

命令是一样的,即

rs.add({host: "mail.giftbutton.com:27017" })

证书有一个重要的限制。

O
成员证书主题名称
中的
OU
DC
clusterFile部分必须与certificateKeyFile
服务器证书主题名称中的
相同。

这意味着一个更重要的约束:您的 client 证书 必须具有与您的服务器证书不同的

O
OU
DC
部分。如果情况并非如此,那么对于每个客户端,只需将 root 添加到连接字符串,即可使用
完整系统
权限(甚至超过内置
authSource=$exernal
角色)连接到 MongoDB。 .

在 MongoDB 7.0 版本中,您可以通过设置

net.tls.clusterAuthX509.attributes
来更改此行为,但到目前为止我从未使用过它。

© www.soinside.com 2019 - 2024. All rights reserved.