#.net #asp.net-core #asp.net-core-2.1 #client-certificates
#.net #asp.net-core #asp.net-core-2.1 #клиент-сертификаты
Вопрос:
Я пытаюсь реализовать проверку пользовательского сертификата клиента для настройки интеграционного теста. Я использую ASP.NET Ядро 2.1.последняя версия и Kestrel вот так:
new WebHostBuilder()
.UseKestrel(
ok => ok.ConfigureHttpsDefaults(
o =>
{
o.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
o.ClientCertificateValidation = RememberClientCertificate;
}))
[..]
.UseUrls("https://localhost:5051")
[..]
private static bool RememberClientCertificate (X509Certificate2 clientCertificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
LastClientCertificate = clientCertificate;
return true;
}
Однако моя функция RememberClientCertificate никогда не вызывается. Независимо от того, отправляю я сертификат клиента или нет.
Что я делаю не так?
Комментарии:
1. Примечание: клиентский сертификат не является доверенным сервером, он самозаверяющий (доверие к сертификату, похоже, тоже не работает)
2. Не могли бы вы достичь какого-либо прогресса в решении этой проблемы?
3. Да, оказалось, я действительно не отправлял сертификат клиента. У нашего клиента был недостаток…
4. После вашего комментария я дважды проверил и вижу то же самое: ClientCertificate не задан в заголовке. В любом случае: отправляете ли вы запрос также из C #?
5. Мы использовали PowerShell, и это была проблема, связанная с тем, что блок скриптов не имеет доступа к внешним переменным без их передачи.