Проблемы с сертификацией SSL\TLS в C#
На серваке произошли проблемы с сертификатом. Мне нужно переписать программу по взятию файла с этого сервера так, что бы она игнорировала ошибки сертификации.
Я выделил основной проблемный код в отдельный консольный проект.
Вот он:
string path = Path.GetTempPath() + "1.pdf";
DownloadFileWebClient(new Uri("http://192.nnn.n.nnn/upload/documents/1.pdf"), path);
public static void DownloadFileWebClient(Uri requestUri, string path)
{
Console.WriteLine("Enter");
ServicePointManager.ServerCertificateValidationCallback += delegate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
Console.WriteLine("----------------------------------------------------");
Console.WriteLine(sslPolicyErrors);
Console.WriteLine("----------------------------------------------------");
return true;
};
try
{
WebClient myWebClient = new WebClient();
myWebClient.DownloadFile(requestUri, path);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
Console.WriteLine("Exit");
}
Вот что выводит мне консоль при запуске:
Enter
----------------------------------------------------
RemoteCertificateNameMismatch
----------------------------------------------------
Exit
При этом код отрабатывает нормально и файл успешно скачивается.
А теперь собственно моя проблема:
Если скомпилированный код этой программы перетащить на сервер, где должно крутиться мое приложение, запустить, то вывод в консоль будет следующим:
Enter
The request was aborted: Could not create SSL/TLS secure channel. at
System.Net.WebClient.DownloadFile(Uri address, String fileName) at
Test.Program.DownloadFileWebClient (Uri requestUri, String path) in C:\Users\nnnn\Documents Projects Test Program.cs:line 36
Exit
Почему то делегат, который переопределяет колбек проверки сертификата вообще не вызывается?
Собственно, у меня вопрос к знающим людям: в чем может быть причина того, что при перемещении скомпилированной программы во втором случае вызова делегата ServerCertificateValidationCallback вобще не происходит?
Проблема в коде, или в самой машине, куда я перекидываю код? Моя машина и серверная находятся в одном домене, правда у серверной нет доступа в интернет, но машина с хранением файла точно доступна для нее.
UPD1:
Если поменять WebClient на HttpClient то ничего не меняется. Фреймворк 4.7.2, на серваке стоит Windows Server 2008 R2.