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.
¿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
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).
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.
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)
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.
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í:
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:
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)
Con Visual Studio, cree una nueva aplicación web
Habilite SSL para su proyecto : vea las propiedades del proyecto (F4) -> SSL Enabledpara True(observe que la SSL URLpropiedad se llena)
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
Localice el archivo de configuración de IIS Expressapplicationhost.config : en 2015 o 2017, el archivo se encuentra en [solution directory]\.vs\config\- en versiones anteriores se encuentra en%UserProfile%\Documents\IISExpress\config\
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.
Respuestas:
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:
fuente
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).
Y el elemento
a
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.
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)
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.
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í:
Cuando habilita SSL en su proyecto, debería verse así:
(todos los puertos 443xx están reservados para proyectos SSL).
fuente
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.config
archivos cambió en Visual Studio 2015 y versiones posteriores.Aquí hay un resumen de lo que dice:
SSL Enabled
paraTrue
(observe que laSSL URL
propiedad se llena)https://localhost:44300
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\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
y<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
propiedad, y se le debe solicitar cuando abra su página en el navegador.fuente