2

根据 MongoDB 文档,应该可以通过 TLS 连接,您可以在其中通过tlsCAFile参数指定 pem 证书。

但是,我无法以成功的方式使用客户端。

[将证书安装到本地存储不是一种选择]

无论我做了什么,客户提供的所有错误都是通用的A timeout occured after 30000ms...+ 。The remote certificate is invalid according to the validation procedure我已经通过向 MongoDB 管理工具明确提供证书来验证服务器是否可以访问。

4

1 回答 1

1

最终偶然发现了一个解决方案:

var clientSettings = MongoClientSettings.FromUrl(new MongoUrl(mongoUrl));

clientSettings.UseTls = true;
clientSettings.SslSettings = new SslSettings
{
    EnabledSslProtocols = SslProtocols.Tls11,
    ServerCertificateValidationCallback = (sender, certificate, chain, errors) =>
        certificate.Subject.Contains("O=myOU,")
};

这是一个较宽松的验证,但足以满足我的需求。您可以使用无验证=> true或完全验证,您可以将证书加载到内存中并验证指纹匹配以及到期日期是否有效。

于 2019-10-29T16:26:42.610 回答