首页 > 解决方案 > 如何使用带有证书文件的 MongoDB.Driver 通过 TLS 连接到服务器?

问题描述

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

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

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

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

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

解决方案


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

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或完全验证,您可以将证书加载到内存中并验证指纹匹配以及到期日期是否有效。


推荐阅读