Встроенный сертификат, не включенный в запрос HttpClient (c #)

#c# #.net #ssl

#c# #.net #ssl

Вопрос:

Я пытаюсь отправить SSL-сертификат во внешний API для проверки подлинности с помощью их сервиса. Я получаю сообщение об ошибке: «Запрос был прерван: не удалось создать защищенный канал SSL / TLS».

Я поговорил с компанией, предоставляющей API, и они сказали, что изменили свой сервис, чтобы принимать любые сертификаты SSL, просто чтобы убедиться, что я действительно отправляю сертификат SSL, и я получил ту же ошибку, поэтому кажется, что сертификат SSL не включен в запрос.

 var clientHandler = new WebRequestHandler();
clientHandler.ClientCertificates.Add(GetEmbeddedCert());

ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager.SecurityProtocol = 
SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback  =
(sender, certificate, chain, sslPolicyErrors) => true;

using (var client = new HttpClient(clientHandler))
{
     return client.PostAsync(_plugin.EndPoint.ToString().Trim(),
     new StringContent(hl7)).Resu<                
}
  

Я использую встроенный сертификат с действием сборки, установленным на «Встроенный ресурс»:

 private X509Certificate2 GetEmbeddedCert()
    {
        using (Stream stream = Assembly.GetExecutingAssembly()
       .GetManifestResourceStream(GetType(), "mycert.cer"))
        {
            byte[] bytes = new byte[stream.Length];
            for (int idx = 0; idx < stream.Length; idx  )
                bytes[idx] = (byte)stream.ReadByte();

            X509Certificate2 cert = new X509Certificate2();
            cert.Import(bytes);
            return cert;
        }
    }
  

У кого-нибудь есть идеи, почему сертификат SSL не отправляется или почему я получаю вышеуказанную ошибку?

Спасибо

Комментарии:

1. Можете ли вы попробовать использовать сертификат с веб-браузером? Работает ли это?

2. По какой-то причине этого сертификата нет в списке сертификатов, который появляется при переходе по URL-адресу в браузере, но я использовал другой, и я получаю метод 405, который не разрешен @MarkoKotar