Не удалось создать безопасный канал SSL / TLS, происходит только на windows сервере 2012 - PullRequest
2 голосов
/ 06 мая 2020

Моя цель - проверить размер файла, я тестировал этот код на нескольких машинах windows server 2012 r2. Следующий код дает ошибку (во всех из них):

Не удалось создать безопасный канал SSL / TLS

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
string url = @"https://www.gov.il/BlobFolder/reports/fortimail/he/FORTIMAIL-CERT-IL-W-1068.pdf";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);            
using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
    var headers = myHttpWebResponse.Headers;
    string fileSize = "0";
    if (headers.AllKeys.Contains("Content-Length"))
        fileSize = headers.GetValues("Content-Length")[0];
    Console.WriteLine(fileSize);
}

Один и тот же код отлично работает на Windows серверах 2016 и windows 10, но не на windows серверах 2012.

когда я ввожу эту ссылку из chrome, она работает даже на сервере 2012, также с почтальоном она работает на всех машинах (но не работает через код в windows 2012).

Ошибка возникает для затем данная ссылка, но для других URL-адресов файлов, таких как http://www.orimi.com/pdf-test.pdf, она работает нормально.

Я также пытался включить TLS через реестр:

enter image description here

есть идеи?

1 Ответ

0 голосов
/ 11 мая 2020

Попытайтесь исправить конфигурацию на:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Это должно заставить его работать. Сайт поддерживает только TLS1.2, которая в настоящее время является широко поддерживаемой версией TLS.

Windows 2012 может выполнять TLS 1.0 "из коробки". Предлагаем применить все обновления windows и отредактировать настройки системы, чтобы TLS 1.2 использовался только по умолчанию. С этими ключами реестра вы были на правильном пути, но их гораздо больше. Конфигурация не очень подробно объясняется в документации Microsoft, возможно, удастся найти переполнение стека, объясняющее настройки.

Windows 2012 R2 достиг конца поддержки в 2018 году, и он достигнет конца расширенной поддержки (при условии, что вы платить за это каждый год) в 2023 году. Вам следует подумать о модернизации. Ожидайте, что устаревшая криптография Windows 2008 и 2012 годов будет постоянным источником проблем с подключением TLS.

curl "https://www.gov.il/BlobFolder/reports/fortimail/he/FORTIMAIL-CERT-IL-W-1068.pdf" --tlsv1.2
... good

curl "https://www.gov.il/BlobFolder/reports/fortimail/he/FORTIMAIL-CERT-IL-W-1068.pdf" --tlsv1.1
curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326)
This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.

curl "https://www.gov.il/BlobFolder/reports/fortimail/he/FORTIMAIL-CERT-IL-W-1068.pdf" --tlsv1.0
curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326)
This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.
...