Cómo configurar IIS Express para solicitar un certificado de cliente


8

¿Alguien sabe cómo configurar IIS Express para requerir un certificado de cliente para el acceso? Estoy tratando de depurar una aplicación ASP.NET problemática que utiliza certificados de cliente para la autenticación.


1
¿Cerca? La mayoría de las configuraciones de IIS Express se configuran en Visual Studio y la depuración de un programa definitivamente está relacionada con la programación ...
Marko

Luego, una pregunta como "¿cómo instalar Visual Studio?" sería una normal? :)
onof

2
No quiero discutir aquí, pero FYI IIS Express se usa principalmente para depurar aplicaciones ASP.NET ya que ofrece una funcionalidad que el servidor de desarrollo ASP.NET no admite. Mi pregunta está relacionada con la depuración. Pero para depurar tengo que configurarlo primero. Creo que es más probable que esto ya sea realizado por algún desarrollador y no por un administrador del sistema, ya que de todos modos usarían el IIS real.
Marko

No sabría cómo requerir programáticamente el certificado del cliente para acceder. Sin embargo, aquí hay un recurso del que encontré ayuda. Espero que esto ayude
rahuL

Este artículo hace exactamente lo que quiere con pasos detallados, (no copiaré / pegaré aquí), vaya a dcdevs.blogspot.com/2017/06/… HTH!
dotnetftw

Respuestas:


5

Use la herramienta Administrador de IIS y siga la documentación de Microsoft Autenticación de asignación de certificado de cliente IIS <iisClientCertificateMappingAuthentication> .

Configuración de muestra:

<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>

Realmente no es una respuesta relevante.
Azimuth

1

Estas fueron las instrucciones entregadas por Jason Shavers en su blog. (Pero esa página ya no existe). Scott Hanselman también habla sobre habilitar SSL en http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Pero en ningún momento se refiere a hacer que el sitio requiera certificados de cliente.

Estas son las instrucciones que seguí:

Cambie applicationhost.config (hay dos de estos en MyDocuments \ IISExpress \ config y el otro en los archivos de programa \ IIS Express \ AppServer por defecto, el que está debajo de su perfil se usa cuando ejecuta un proyecto en IISExpress en VS 2012 El otro puede se ejecute usando la línea de comando que es lo que hice en la máquina de prueba local).

  1. Cambiar el elemento

<access sslFlags = "Ninguno" /> a <access sslFlags = "SslNegotiateCert" />

Y el elemento

<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>

a

<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>

Los dos pasos siguientes deben realizarse en Visual Studio. De manera predeterminada, cuando se crea un nuevo proyecto en VS 2012, se crea como un proyecto IIS Express. Un proyecto anterior transferido a VS2012 puede tener que cambiar esa configuración.

  1. En la página de propiedades del proyecto en la pestaña Web, cambie Usar Visual Studio Developer Server para usar el servidor web local IIS. (Debe haber una casilla de verificación en gris que diga Usar IIS Express si no tiene una instalación regular de IIS en su máquina (lo que no se puede hacer en estas máquinas NMCI). Debería haber una URL del proyecto que diga algo como http: // Localhost: 62714 / (que debe ser el mismo puerto configurado como "puerto específico" en la configuración del Servidor de desarrollo de Visual Studio (si está configurado)

  2. Luego seleccione el Proyecto en el explorador de soluciones y vaya a la pestaña de propiedades. (A veces, esto se debe hacer un par de veces antes de que se muestren las propiedades). Esto tendrá tres propiedades, SSL Enable, que por defecto es falso, SSL URL que está en blanco con un nuevo proyecto y URL que se establece en la URL en " URL del proyecto "en la pestaña de propiedades.

Cambie la propiedad habilitada para SSL a verdadero y se creará una nueva URL SSL.

  1. Copie esa URL SSL y regrese a la página de propiedades del proyecto y péguela allí como la nueva URL del proyecto. Llegué a "Crear directorio virtual" en este punto, aunque algunos blogs dicen que no es necesario que solo necesite guardar el proyecto y ejecutarlo en depuración.

En el archivo applicationhost.config debajo del elemento "" se crea una nueva entrada cuando el proyecto se ejecuta por primera vez antes de habilitar SSL. Se verá así:

        <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>

Cuando habilita SSL en su proyecto, debería verse así:

        <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>

(todos los puertos 443xx están reservados para proyectos SSL).


0

Encontré un blog que detallaba cómo configurar las solicitudes de certificados de cliente para IIS Express (utilicé Visual Studio 2017, IISExpress 10.0). Aparentemente, la ubicación de los applicationhost.configarchivos cambió en Visual Studio 2015 y versiones posteriores.

Aquí hay un resumen de lo que dice:

  1. Instale el certificado (tenga en cuenta que la clave privada solo es necesaria desde el lado del cliente) en la máquina de desarrollo (debe estar visible en las listas de certificados del navegador en su configuración)
  2. Con Visual Studio, cree una nueva aplicación web
  3. Habilite SSL para su proyecto : vea las propiedades del proyecto (F4) -> SSL Enabledpara True(observe que la SSL URLpropiedad se llena)
  4. Configure su proyecto para que comience en modo SSL : vaya a Propiedades del proyecto (Alt + Intro), seleccione la pestaña Web y modifique la URL del proyecto a la del paso 3. Ej.https://localhost:44300
  5. Localice el archivo de configuración de IIS Express applicationhost.config : en 2015 o 2017, el archivo se encuentra en [solution directory]\.vs\config\- en versiones anteriores se encuentra en%UserProfile%\Documents\IISExpress\config\
  6. Modifique el archivo applicationhost.config : establezca <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />y<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. El certificado ahora está disponible en el código de la Request.ClientCertificatepropiedad, y se le debe solicitar cuando abra su página en el navegador.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.