Невозможно подключиться к сайту через C#, но через Firefox - PullRequest
0 голосов
/ 06 мая 2020

Когда я пытаюсь подключиться к веб-сайту, я получаю сообщение об ошибке:

Запрос был прерван: не удалось создать безопасный канал SSL / TLS

Статус в исключение - SecureChannelFailure, ответ нулевой.

Поиск ответов в StackOverflow мне пока не помог. Я перепробовал все решения:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

ServerCertificateValidationCallback никогда не вызывается.

Я могу без проблем открыть веб-сайт в Firefox и Edge (Chromium), но Inte rnet Explorer не может установить к нему безопасное соединение. Поэтому я предполагаю, что HttpWebRequest использует ту же «механику», что и Inte rnet Explorer, но я не могу понять, какой именно.

На https://server.cryptomix.com/secure/ Я гарантировал, что не не представлен клиентский SSL-сертификат. Это означает, что мне не нужно добавлять ClientCertificate к запросу.

Вот мой весь тестовый код:

public static void Main()
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    ServicePointManager.Expect100Continue = true;
    ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(@"https://netmap.vodafone.de"));

    request.Method      = "GET";
    request.ContentType = "text/json";

    try
    {
        using (var response = (HttpWebResponse)request.GetResponse())
        {

        }
    }
    catch (Exception e)
    {
        throw;
    }
}

У вас есть идеи, почему я могу подключиться к Inte rnet Explorer и HttpWebRequest, но с Firefox это возможно?

Вы получаете ту же ошибку при запуске кода?

Изменить: я обнаружил, что веб-сайт использует TLS 1.3, но нет значения перечисления SecurityProtocolType.Tls13.

Ответы [ 2 ]

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

Похоже, это проблема вашего клиента.

Я уверен, что проблемы с наборами шифров, у сайта довольно хорошая конфигурация TLS (данные с ssllabs.com): enter image description here

Пожалуйста, проверьте свою ОС ( полностью пропатчен? ) на предмет поддержки.

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

У меня раньше была такая же проблема в одном из моих проектов. Это сработало для меня:

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

Требуется пространство имен System.Net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...