Встроенный сертификат не включен в запрос HttpClient (c #) - PullRequest
2 голосов
/ 08 апреля 2019

Я пытаюсь отправить 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)).Result;                
}

Я использую встроенный сертификат с Build Action, для которого установлено значение «Встроенный ресурс»:

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не отправляется или почему я получаю вышеуказанную ошибку?

Спасибо

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