根据MongoDB文档,应该可以通过TLS进行连接,而您可以通过tlsCAFile
参数指定pem证书。
但是,我无法以成功的方式使用客户端。
[无法将证书安装到本地存储中]
客户端提供的所有错误信息都是通用的A timeout occured after 30000ms...
+ The remote certificate is invalid according to the validation procedure
,无论我做了什么。我已通过向服务器显式提供证书来验证MongoDB管理工具可访问该服务器。
答案 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
进行无验证,也可以进行完全验证,可以将证书加载到内存中,并验证指纹与到期日期是否匹配。