_Q12_ Ответов: 3

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


Я получаю эту ошибку для конкретного веб-сайта, который они объявили, что внесли некоторые изменения пару месяцев назад. Теперь, когда я проверяю его через c# ... что - то не так. Другие сайты, которые я проверяю, работают с этим кодом нормально.
Может кто-нибудь прояснить это для меня, пожалуйста?
{"The request was aborted: Could not create SSL/TLS secure channel."}



Я использую этот код:
// I google it and find this 3lines as being helpful - THEY ARE NOT HELPING AT ALL
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.DefaultConnectionLimit = 9999;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls; 
//(In my VS2010, I only see Ssl3 and Tls,that's it - this may be the cause?)

            HttpWebRequest request;
            HttpWebResponse response = null;
            Stream stream = null;
            request = (HttpWebRequest)WebRequest.Create("https://www.MyWebsiteToCheck.com/");
            request.UserAgent = "Foo";
            request.Accept = "*/*";

            request.UseDefaultCredentials = true;
            request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

//{"The request was aborted: Could not create SSL/TLS secure channel."}
//and response is null.
            response = (HttpWebResponse)request.GetResponse();//<<<here it breakes
            stream = response.GetResponseStream();

            if (stream != null) stream.Close();
            if (response != null) response.Close();

Спасибо.

Что я уже пробовал:

.................................................................................

3 Ответов

Рейтинг:
23

_Q12_

Я думаю, что нашел решение :
Поддержка TLS 1.2 и .NET: как избежать ошибок подключения - совершенные блоги[^]

//in .NET 4.0, TLS 1.2 is not supported, but if you have .NET 4.5 (or above) installed on the system
//then you still can opt in for TLS 1.2 even if your application framework doesn't support it.
//The only problem is that SecurityProtocolType in .NET 4.0 doesn't have an entry for TLS1.2,
//so we'd have to use a numerical representation of this enum value:
//ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
//instead of:
// ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;

Так что это была проблема .NET в конце концов. Хммм.
Я оставляю это здесь с тем результатом, который нахожу, может быть, это поможет и другим тоже.


CoolBeans1

Отлично, это решило проблему..

ajarun03

Servicepointmanager и.SecurityProtocol = 3072

Идеальный вариант. Бьют почти неделю,
Миллиард благодарностей.

Member 2411753

Я знаю, что это старая книга, но я застрял на ней уже больше недели. Ты спас мне жизнь. Спасибо!!!

Рейтинг:
2

Dladla_Mthombeni

<pre>ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 |
                                                   SecurityProtocolType.Tls | SecurityProtocolType.Tls11;


CHill60

Вы читали комментарии OP в коде .. "//(в моем VS2010 я вижу только Ssl3 и Tls, вот и все - это может быть причиной?)"
и по их решению "на .Net версии 4.0, TLS до версии 1.2 не поддерживается,"
поэтому предлагать им использовать его, когда они не могут, бесполезно

Рейтинг:
1

Member 14584707

Добавьте эту строку
Servicepointmanager и.SecurityProtocol = SecurityProtocolType.Ssl3;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.СС | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
Servicepointmanager и.ServerCertificateValidationCallback = (snder, cert, chain, error) => true;
Это работает.


Dave Kreskowiak

ОП сам ответил на этот вопрос в прошлом году. Вы вообще читали решение перед публикацией?

nandox

Это сработало для меня!!!!
Большое вам спасибо, сэр.

Я использую NetFramework 4.5, Решение 1 не сработало для меня :(

Member 14780208

я использую framework 4.0. он выдает мне ошибку ServicePointManager не существует в текущем контексте. Пожалуйста помочь.