Можно ли отправить клиентский сертификат без (доступа к) закрытого ключа в запросе HTTP (например, с помощью HttpClient)?
Целевой API может быть достигнут, и сертификат клиента доступен со следующей реализациейHTTPS-запрос, использующий сертификат клиента с закрытым ключом.
var handler = new HttpClientHandler();
handler.ClientCertificates.Add(new X509Certificate2(@"clientcertificate.pfx", "password"));
var client = new HttpClient(handler);
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "https://url");
var result = await client.SendAsync(httpRequestMessage);
Сертификат клиента читается как var clientCertificate = await Request.HttpContext.Connection.GetClientCertificateAsync();
на стороне целевого API.
Однако, когда сертификат без (доступа к) закрытого ключаиспользуется во время запроса HTTPS, целевой API не получает сертификат клиента (это значение null
в свойстве Request.HttpContext.Connection.ClientCertificate
).
handler.ClientCertificates.Add(new X509Certificate2(@"clientcertificate.crt"));