Как использовать закрытый ключ сертификата клиента в веб-API C#C#

Место общения программистов C#
Ответить
Anonymous
 Как использовать закрытый ключ сертификата клиента в веб-API C#

Сообщение Anonymous »

Я пытаюсь использовать клиентский сертификат в своем веб-API C# для подписи созданных PDF-документов. Мне удалось разрешить сертификат клиента в Startup.cs, используя следующий код:

Код: Выделить всё

services.Configure(options =>
{
options.ConfigureHttpsDefaults(o =>
{
o.ClientCertificateMode = Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode.AllowCertificate;
o.AllowAnyClientCertificate();
o.ClientCertificateValidation = (cert, chain, policyErrors) =>
{
return true;
};
o.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
}
);
});
Затем в методе конечной точки контроллера я могу получить доступ к сертификату клиента через:

Код: Выделить всё

var certificate = await this.HttpContext.Connection.GetClientCertificateAsync();
где переменная сертификата имеет тип X509Certificate2. Однако сертификат, переданный в API, не имеет закрытого ключа: свойство HasPrivateKey имеет значение false, а свойство PrivateKey имеет значение null.
У меня есть отметим, что сертификат, который я использую в качестве тестового примера, имеет соответствующий закрытый ключ (т. е. при доступе через «Управление сертификатами пользователя» на моем ПК с Windows 11).
Буду признателен за любую помощь.< /п>

Подробнее здесь: https://stackoverflow.com/questions/791 ... rp-web-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»