如何使用带有证书文件的MongoDB.Driver通过TLS连接到服务器?

时间:2019-10-21 20:59:50

标签: c# mongodb .net-core mongodb.driver

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

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

[无法将证书安装到本地存储中]

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

1 个答案:

答案 0 :(得分:0)

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

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进行无验证,也可以进行完全验证,可以将证书加载到内存中,并验证指纹与到期日期是否匹配。