.NET 4.x WebRequest не отправляет сертификат - C#

Узнай цену своей работы

Формулировка задачи:

Есть следующий код для работы с неким сервисом по api.
            ServicePointManager.SecurityProtocol |=  SecurityProtocolType.Tls12;
            ServicePointManager.Expect100Continue = true;
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.ClientCertificates.AddRange(Certificate);//X509Certificate2Collection считывается из p12 содержащим приватный и публичный ключ
            request.ContentType = "application/json";
            request.Accept = "application/json";
            request.Headers.Add("Accept-Encoding", "gzip,deflate");
            request.Method = method.Method;
            request.Credentials = new NetworkCredential(UserName, Password);
            return request;
И вот в чём прикол. При запросе через curl сертификат отправляется. Но при запросе через этот код, нет. Есть какие идеи? уже пробовал юзать HttpClient. Результат идентичен. Так же при работе с другими сервисами такой проблемы нет. Сертификаты передаются.

Решение задачи: «.NET 4.x WebRequest не отправляет сертификат»

textual
Листинг программы
System.Net Information: 0 : [20820] SecureChannel#41622463 - Сертификат относится к типу X509Certificate2 и содержит закрытый ключ.
System.Net Information: 0 : [20820] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent  = Outbound, scc     = System.Net.SecureCredential)
System.Net Information: 0 : [20820] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = 
System.Net Information: 0 : [19136] SecureChannel#41622463 - Пользователь признал удаленный сертификат действительным.
System.Net Information: 0 : [19136] EndProcessAuthentication(протокол=Tls12, шифр=Aes256 256 разрядов, хэш=Sha384 0 разрядов, обмен ключами=44550 256 разрядов).
....
System.Net.Sockets Verbose: 0 : [19136] Socket#33711845::BeginSend()
System.Net.Sockets Verbose: 0 : [20820] Data from Socket#33711845::PostCompletion

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы