Не удалось получить сертификат из HttpContext, который был отправлен из HttpClient

#c# #.net #asp.net-core #.net-core #dotnet-httpclient

#c# #.net #asp.net-core #.net-core #dotnet-httpclient

Вопрос:

Ну, я перепробовал много разных решений, но, похоже, ни одно из них не работает. Я создал самозаверяющий сертификат из IIS Manager, а также импортировал его в хранилище сертификатов.(Текущий пользователь Личные Сертификаты). Я попытался отправить этот сертификат, используя приведенную ниже часть кода:

         var cert = new X509Certificate2(@"C:\Test.pfx", "asdf");
        var handler = new HttpClientHandler() { ClientCertificateOptions = ClientCertificateOption.Manual };
        handler.ClientCertificates.Add(cert);
    
        var client = new HttpClient(handler);

        var request = new HttpRequestMessage()
        {
            RequestUri = new Uri("https://localhost:44351/helloworld"),
            Method = HttpMethod.Get,
            
        };
        var response = client.SendAsync(request).GetAwaiter().GetResult();
        if (response.IsSuccessStatusCode)
        {
            var responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();

        }
 

Но я, когда пытался его получить, он состоит из null.

        var clientCertificate = httpContext.Connection.ClientCertificate;
 

Я думаю, что существуют некоторые базовые концепции, которые я не могу выяснить.

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

1. Сертификат не должен быть частью кода. HTTPS использует TLS для аутентификации. Перед отправкой HTTP-запроса TLS выполняет аутентификацию. Сервер отправляет блок сертификата TLS со списком имен сертификатов, которые он может использовать. Клиент ищет сертификат, пока не найдет соответствующий сертификат в пользовательских хранилищах.