mongodb - 如何从通配符域证书为 mongodb 创建“certificateKeyFile”?
问题描述
我试图建立与 mongodb 服务器的安全连接。
为了使事情正常工作,我需要提供certificateKeyFile
给mongod.conf
配置文件。
我知道我需要连接一些文件来获取certificateKeyFile
. 但哪些?
我得到的文件(通配符域证书):
- authorityCertificates.ca-bundle
- 域证书.crt
- 请求.csr
- 私钥
我已经mongod.conf
根据文档进行了设置
net:
port: 27017
bindIp: 127.0.0.1, 42.42.42.42
tls:
mode: requireTLS
certificateKeyFile: /etc/mongodb.pem
当我尝试连接到数据库时,我已经连接domainCertificate.crt
并private.key
获取:mongodb.pem
mongo 42.42.42.42 --tls --tlsCAFile ./authorityCertificates.ca-bundle
我明白了:
SL peer certificate validation failed:
unable to get issuer certificate
我的基本理解是,当客户端连接到MongoDB
服务器时,它会显示由权威证书签名的域证书。之后,客户端获取授权证书并验证域证书的有效性。如果验证了域证书,则服务器和客户端建立安全连接。
我错过了什么?
解决方案
是的,我已经成功了。
- 将 mongodb.mydomain.com的 DNS A 记录指向42.42.42.42
- 创建mongodb.pem文件并将其上传到 mongodb 服务器
cat ./authorityCertificates.ca-bundle ./domainCertificate.crt > ./chained.pem
cat ./chained.pem ./private.key > mongodb.pem
- 成功连接到远程机器上的mongodb
mongo mongodb.mydomain.com --tls
推荐阅读
- ios - NativeScript - 使用 iBeacon 重新启动应用程序,AppDelegate 必须实现窗口属性
- javascript - 使用 lodash 过滤数组 WithIn Array
- elasticsearch - ElasticSearch 可以选择不为空或不为空的包含字段之一吗?
- c# - 当在长多表查询中无法直接计数时,有什么方法可以在有子句中使用 COUNT 变量
- java - 在 maven 上运行时的 OutOfMemory Java 堆空间,即使内存已增加
- python - python中追加数据框中的列顺序不正确
- c# - 在 UnitTest 中处理调度程序计时器
- java - Redis如何将值存储为json
- angular - 重新初始化组件时,AGM 是否保留 Google Map 的会话?
- amazon-web-services - 无需更改客户端代码即可轮换 IAM 用户访问密钥