【问题标题】:MongoDB SSL connection with self signed certificate带有自签名证书的 MongoDB SSL 连接
【发布时间】:2020-04-22 05:30:28
【问题描述】:

鉴于最近发生的 MongoDB 黑客事件。我们也被黑客攻击了。

我们启用了授权并更改了服务器的默认端口。

但是,我们希望借助自签名证书加密与服务器的通信通道。

所以我们的配置如下所示

  tls:                                                                                                                                     
    mode: requireTLS                                                                                                                      
    allowConnectionsWithoutCertificates: false                                                                                            
    certificateKeyFile: /etc/ssl/server.pem                                                                                                
    CAFile: /etc/ssl/ca.crt 

当我尝试将 mongoshell 与客户端证书连接时,会发生连接不断被拒绝的情况。但在注释 CAFile 配置并使用 --tlsAllowInavlidCertificates 后,连接已创建。

我使用以下链接创建了证书: https://gist.github.com/kevinadi/96090f6f9973ff8c2d019bbe0d9a0f70

要连接到服务器,我使用以下命令:

mongo --host hostname --username user --password password --authenticationDatabase admin --port port --tls --tlsCertificateKeyFile client.pem --tlsCAFile ca.crt

我不知道我做错了什么,这是正确的方法吗?

【问题讨论】:

  • 客户端证书和服务器证书需要由同一个根证书颁发机构颁发,因此服务器可以使用其ca.crt验证客户端证书。
  • 这就是我在这里所做的事情,我想通过点击该链接。单个根 CA 正在签署这些证书。
  • 尝试使用 openssl 验证服务器的 ca.crt 和客户端证书。反之亦然

标签: mongodb ssl client-certificates


【解决方案1】:

服务器日志包含连接被拒绝的原因。

【讨论】:

  • 日志非常稀疏,并没有指出问题所在。这就是我收到来自客户端的请求时出错:SSLHandshakeFailed:SSL 对等证书验证失败:自签名证书。结束来自 的连接
  • 这意味着您没有指定与另一端提供的客户端证书相匹配的 CA 证书。不幸的是,您发现该消息对于问题出在哪个端通常没有帮助,因此通常您需要同时检查两者。
猜你喜欢
  • 2019-04-26
  • 2012-01-14
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2021-10-22
  • 2015-02-09
  • 2010-09-12
相关资源
最近更新 更多