- Windows 10 Pro x64
- Mongodb 4.4
- 指南针GUI
我将Mongodb设置为正常(没有安全性(,并验证一切正常。现在正在尝试添加TLS/SSL。我遵循了的指示
https://docs.mongodb.com/manual/appendix/security/appendixA-openssl-ca/https://docs.mongodb.com/manual/appendix/security/appendixB-openssl-server/
没有错误。一切都成功了。使用验证pems
openssl verify -CAfile mongodb.pem mongodb01.pem
mongodb01.pem: OK
更新了我的配置文件:
net:
port: 27017
bindIp: mongodb01.xxx.com
tls:
mode: requireTLS
certificateKeyFile: C:Program FilesMongoDBServer4.4binmongodb01.pem
CAFile: C:Program FilesMongoDBServer4.4binmongodb.pem
CA证书是为*.xxx.com创建的,服务器证书是为mongodb01.xxx.com创建。注意:mongodb101.xxx.com在我的主机文件中伪造为127.0.0.1。我以前做过很多次,当它们都在同一台机器上时,假dns名称技巧确实有效。
然后我用运行mongodb
mongod --config "C:Program FilesMongoDBServer4.4binmongod.cfg"
但当我尝试时:
openssl s_client -connect mongodb01.xxx.com:27017
verify error:num=20:unable to get local issuer certificate
verify error:num=21:unable to verify the first certificate
编辑:
所以我取得了一些进步。我不认为MongoDB正在获取CAFile。当我将根证书和中间证书添加到mongodb01.pem中(并且所有3个证书都用同一密钥签名(时,证书链通过了,但它返回了一个自签名证书错误(正如预期的那样(。
我还没有尝试过从Java中调用它,我试图先让它在Compass中工作。然而,Compass抱怨自签名证书。我试图将证书放入我信任的存储中,但Compass仍然拒绝连接。
您需要向s_client提供CA证书,除非证书由知名CA颁发,并且其CA证书在openssl附带的捆绑包中(假设存在这样的捆绑包(。
使用-CApath
或-CAfile
选项可以指定CA证书。
openssl通常没有任何默认的根证书颁发机构。
尝试使用-CAfile
选项(如(通过CA
openssl s_client -CAfile mongodb.pem -connect mongodb01.orionsoftware.com:27017
请注意,mongodb.pem不应包含用于此用途的私钥。