在 Debian 上部署 MongoDB 时,“加密”通常包含三个层面,你可以根据实际需求选择:
目的: 防止客户端与 MongoDB 之间通信被窃听(类似 HTTPS)
openssl req -newkey rsa:2048 -nodes -keyout mongodb.key -x509 -days 365 -out mongodb.crt
cat mongodb.key mongodb.crt > mongodb.pem
编辑 /etc/mongod.conf
net:
port: 27017
tls:
mode: requireTLS
certificateKeyFile: /etc/mongod/mongodb.pem
CAFile: /etc/mongod/mongodb.crt
sudo systemctl restart mongod
客户端连接:
mongo --tls --host localhost
目的: 防止服务器被物理拿走或磁盘被复制
⚠️ 仅 MongoDB Enterprise 支持
storage:
wiredTiger:
encryption:
name: percona
keyFile: /path/to/key
使用 LUKS
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb mongo_disk
mkfs.ext4 /dev/mapper/mongo_disk
mount /dev/mapper/mongo_disk /var/lib/mongodb
目的: 即使 DB 被破解,数据也不可读
示例(Node.js):
const client = new MongoClient(uri, {
autoEncryption: {
keyVaultNamespace: "encryption.__keyVault",
kmsProviders: { local: { key: localKey } }
}
});
use admin
db.createUser({
user: "admin",
pwd: "强密码",
roles: ["root"]
})
/etc/mongod.conf
security:
authorization: enabled
✅ Debian + LUKS 磁盘加密
✅ MongoDB TLS 传输加密
✅ 用户认证 + 最小权限
✅ 重要字段应用层加密
如果你告诉我:
我可以给你更精确的配置步骤。