Кто-нибудь знает, как настроить IIS Express для запроса сертификата клиента для доступа? Я пытаюсь отладить проблемное приложение ASP.NET, которое использует сертификаты клиента для аутентификации.
Используйте инструмент IIS Manager и следуйте документации Microsoft Проверка подлинности сопоставления сертификата клиента IIS <iisClientCertificateMappingAuthentication>.
Пример конфигурации:
<location path="Default Web Site">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Contoso Employees"
enabled="true"
permissionMode="Allow"
userName="Username"
password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
<rules>
<add certificateField="Subject"
certificateSubField="O"
matchCriteria="Contoso"
compareCaseSensitive="true" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
<access sslFlags="Ssl, SslNegotiateCert" />
</security>
</system.webServer>
</location>
Я нашел блог подробно описано, как настроить запросы сертификатов клиентов для IIS Express (я использовал Visual Studio 2017, IISExpress 10.0). Видимо расположение applicationhost.config
файлы, измененные в Visual Studio 2015 и более поздних версиях.
Вот краткое изложение того, что в нем говорится:
SSL Enabled
к True
(обратите внимание на SSL URL
недвижимость заселяется)https://localhost:44300
applicationhost.config
: В 2015 или 2017 году файл находится в [solution directory]\.vs\config\
- в более ранних версиях он находится в %UserProfile%\Documents\IISExpress\config\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
и <iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
свойство, и должно отображаться при открытии страницы в браузере.Это были инструкции, которые Джейсон Шейверс раздал в своем блоге. (Но эта страница больше не существует.) Скотт Хансельман также говорит о включении SSL на http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Но он ни разу не говорит о том, чтобы заставить сайт требовать сертификаты клиентов.
Вот инструкции, которым я следовал:
Измените applicationhost.config (их два в MyDocuments \ IISExpress \ config, а другие в программных файлах \ IIS Express \ AppServer по умолчанию тот, который находится под вашим профилем, используется при запуске проекта на IISExpress в VS 2012. Другой может запускаться из командной строки, что я и сделал на локальной тестовой машине.)
<access sslFlags = "None" /> для <access sslFlags = "SslNegotiateCert" />
И элемент
<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>
к
<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>
Следующие два шага должны быть выполнены в Visual Studio. По умолчанию, когда новый проект создается в VS 2012, он создается как проект IIS Express. В более старом проекте, перенесенном на VS2012, возможно, придется изменить этот параметр.
На странице свойств проекта на вкладке Интернет измените параметр Использовать сервер разработчика Visual Studio на использование локального веб-сервера IIS. (Должен быть неактивный флажок с надписью Использовать IIS Express, если у вас нет регулярной установки IIS на вашем компьютере (что невозможно сделать на этих машинах NMCI). Должен быть URL-адрес проекта, говорящий что-то вроде http: // Локальный: 62714 / (это должен быть тот же порт, который установлен как «определенный порт» в настройке Visual Studio Development Server (если он установлен)
Затем выберите проект в обозревателе решений и перейдите на вкладку свойств. (Иногда это необходимо сделать пару раз, прежде чем свойства появятся.) У него будет три свойства: SSL Enable, значение по умолчанию false, SSL URL, который пуст с новым проектом, и URL, который установлен на URL в " URL проекта "на вкладке свойств.
Измените свойство SSL enabled на true, и будет создан новый URL SSL.
В файле applicationhost.config под элементом "" создается новая запись при первом запуске проекта до включения SSL. Это будет выглядеть так:
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
</bindings>
</site>
Когда вы включаете SSL в своем проекте, это должно выглядеть так:
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
<binding protocol="https" bindingInformation="*:44313:localhost" />
</bindings>
</site>
(все порты 443xx зарезервированы для проектов SSL).