部署于EC2的生产环境MongoDB:IP连接时SSL/TLS配置指导
为MongoDB的EC2实例IP地址配置SSL/TLS证书
因为SSL/TLS证书默认绑定域名,要支持IP地址连接,你需要生成**包含IP作为Subject Alternative Name(SAN)**的证书。以下是具体操作步骤:
1. 生成包含IP的证书签名请求(CSR)
用openssl工具生成CSR,明确指定IP作为SAN扩展:
openssl req -newkey rsa:2048 -nodes -keyout mongodb-ip.key -out mongodb-ip.csr \ -subj "/C=CN/ST=你的省份/L=你的城市/O=你的组织/OU=你的团队/CN=xxx.xxx.xxx.xxx" \ -addext "subjectAltName=IP:xxx.xxx.xxx.xxx"
- 替换
xxx.xxx.xxx.xxx为你的EC2实例公网(或内网)IP - 其他字段(C/ST/L/O/OU)可根据实际情况修改
2. 签署证书(自签或CA签发)
选项1:自签证书(适合内部测试/私有环境)
直接用生成的私钥签署CSR,生成自签证书:
openssl x509 -req -in mongodb-ip.csr -signkey mongodb-ip.key -out mongodb-ip.crt \ -days 365 -addext "subjectAltName=IP:xxx.xxx.xxx.xxx"
选项2:可信CA签发证书(适合生产公网环境)
将生成的CSR提交给支持IP作为SAN的CA(比如DigiCert、GlobalSign等,Let's Encrypt暂不支持IP证书),按照CA流程获取签发的证书文件。
3. 合并证书与私钥(MongoDB要求PEM格式)
MongoDB需要将私钥和证书合并成单个PEM文件:
cat mongodb-ip.key mongodb-ip.crt > mongodb-ip.pem
- 确保文件权限安全:
chmod 600 mongodb-ip.pem,并将所有权赋予MongoDB运行用户(比如chown mongod:mongod mongodb-ip.pem)
4. 更新MongoDB配置文件
编辑MongoDB的配置文件(通常是/etc/mongod.conf),修改net.ssl段:
net: port: 27017 ssl: mode: requireSSL PEMKeyFile: /path/to/mongodb-ip.pem # 替换为实际文件路径 CAFile: /path/to/ca.crt # 如果是CA签发的,填CA根证书路径;自签的话填mongodb-ip.crt allowInvalidCertificates: false # 生产环境禁用此选项
5. 重启MongoDB服务
sudo systemctl restart mongod # 或根据系统用:sudo service mongod restart
6. 测试IP连接
用mongo shell验证连接:
mongo --host xxx.xxx.xxx.xxx --port 27017 --ssl \ --sslCAFile /path/to/ca.crt \ --username 你的用户名 --password 你的密码
- 如果是自签证书,客户端需要信任该证书;测试时可临时加
--sslAllowInvalidCertificates,但生产环境禁止使用。
额外注意事项
- 若需同时支持域名和IP连接,生成CSR时可同时添加域名和IP:
subjectAltName=DNS:your-domain.com,IP:xxx.xxx.xxx.xxx - 证书过期前记得提前更新,替换证书文件后重启MongoDB即可
- 确保EC2安全组已允许目标IP访问MongoDB默认端口27017
内容的提问来源于stack exchange,提问作者Vikram
相关产品推荐
相关产品推荐

