Как подключиться к серверу через TLS, используя MongoDB.Driver с файлом сертификата? - PullRequest
0 голосов
/ 21 октября 2019

В соответствии с документацией MongoDB предполагается, что можно подключиться через TLS, где вы указываете сертификат pem с помощью параметра tlsCAFile.

Однако я не смог использовать клиент в такой ситуации. Таким образом, это успешно.

[Установка сертификата в локальное хранилище НЕ является опцией]

Все, что предоставляет клиент в качестве ошибки, является общим A timeout occured after 30000ms... + The remote certificate is invalid according to the validation procedure независимо от того, что я сделал. Я убедился, что сервер доступен административным инструментам MongoDB, предоставив им сертификат явно.

1 Ответ

0 голосов
/ 29 октября 2019

В конце концов наткнулся на решение этой проблемы:

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 или для полной проверки вы можете загрузить сертификат в память и убедиться, что отпечатки совпадают с датами истечения срока действия.

...