Я разрабатываю приложение dotnetcore 2.0 mvc, которое требует включения клиентского сертификата.
Я создал доверенный сертификат Root CA И сертификат отзыва, которые установлены в доверенных корневых центрах сертификации LocalMachine.
makecert -n "CN=RootCaTest" -r -sv RootCaTest.pvk RootCaTest.cer makecert -crl -n "CN=RootCaTest" -r -sv RootCaTest.pvk RootCaTest.crl
Затем я использовал этот сертификат RootCaTest для создания сертификата клиента:
В IIS-Express applicationHost.config я установил (как и в других статьях)
<system.webServer>
<security>
<access sslFlags="Ssl, SslNegotiateCert" />
....
</security>
<authentication>
<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
....
</authentication>
</system.webServer>
Когда я пытаюсь отладить приложение, я получаю сообщение об ошибке «Невозможно запустить dotnet.exe. Сервер вернул ошибку 403» — и что полный ответ был записан в HttpFailure_xx.html. файл HttpFailure показывает, что «сертификат вашего клиента либо не является доверенным, либо недействительным».
Ошибка возникает ДО открытия веб-браузера для отладки — Visual Studio 2017 показывает системное сообщение с ошибкой.
Я следовал инструкциям на этой странице, что приводит к проверке того, что «в хранилище сертификатов доверенных корневых центров сертификации есть один или несколько несамоподписанных сертификатов. Несамоподписанный сертификат — это любой сертификат, для которого» " и значения "Кем выдано" не совпадают." - после проверки их нет.
Без вышеуказанных изменений в конфигурации iis-express Context.Connection.ClientCertificate всегда имеет значение null.
Я провел последние два дня, читая пост за постом об этом, но не могу найти решения, которое работает в моем случае.
Обратите внимание, что я проверил, что ClientCertificate правильно отправляется через HttpClient.