#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 со списком имен сертификатов, которые он может использовать. Клиент ищет сертификат, пока не найдет соответствующий сертификат в пользовательских хранилищах.