FTP через TLS (FTPS) - правильная проверка сертификата X.509 - PullRequest
0 голосов
/ 31 мая 2019

Следующий код может подключаться к FTP-серверу с использованием TLS:

private FtpClient getFtpsClient(System.Uri uri) {
    if (uri.Scheme != "ftps") {
        throw new NotImplementedException("Only ftps is implementent");
    }
    var userInfo = uri.UserInfo.Split(":");
    FtpClient client = new FtpClient(uri.Host, userInfo[0], userInfo[1]);
    client.EncryptionMode = FtpEncryptionMode.Explicit;
    client.SslProtocols = SslProtocols.Tls;
    client.ValidateCertificate += new FtpSslValidation(OnValidateCertificate);
    client.Connect();

    void OnValidateCertificate(FtpClient control, FtpSslValidationEventArgs e) {
        var cert2 = new X509Certificate2(e.Certificate);
        e.Accept = cert2.Verify();
    }
    return client;
}

Интересно, достаточно ли метода X509Certificate2.Verify () для предотвращения проблем безопасности.

Что именно делает X509Certificate2.Verify () ?В упомянутой документации очень мало информации.
Сбой при атаке "человек посередине" ?

...