Ejecución de IIS Express sin Privilegios administrativos

por Vaidy Gopalakrishnan

IIS Express se diseñó para permitir que las tareas de desarrollo y pruebas web más comunes se realicen sin privilegios administrativos. Esto es muy útil en escenarios en los que los desarrolladores no tienen derechos administrativos en sus equipos. Incluso para los usuarios administrativos, esta característica evita que la ventana emergente Control de cuentas de usuario (UAC) en Windows Vista y Windows 7 interrumpa el flujo de trabajo.

En este artículo se explica qué pueden hacer los usuarios estándar con IIS Express y se describen las tareas limitadas a los administradores.

Ejecutar sitios localmente

Con IIS Express, los usuarios estándar pueden ejecutar sitios web localmente mediante puertos no reservados (puertos mayores que 1024). El enlace de sitio web predeterminado para IIS Express es http://localhost:8080. De forma predeterminada, WebMatrix y Visual Studio 2010 SP1 Beta también configuran sitios web para usar localhost y un puerto no reservado.

Por el contrario, se necesitan privilegios administrativos para servir contenido para solicitudes externas o usar un puerto reservado como 80 o 443.

Configuración de sitios web y aplicaciones

IIS e IIS Express usan un archivo applicationhost.config que contiene información de configuración de todo el servidor. Con IIS Express, cada usuario posee su propia copia de applicationhost.config, lo que significa que el usuario puede agregar sitios, quitar sitios, configurar directorios virtuales, etc. sin privilegios especiales. IIS Express busca un archivo applicationhost.config en la carpeta Documentos del usuario (por ejemplo, %userprofile%\Documents\IISExpress\config en Windows 7). IIS Express también puede apuntar a un archivo applicationhost.config personalizado mediante el modificador de línea de comandos /config. El resultado es que no es necesario ser administrador para usar IIS Express con Visual Studio.

Dado que IIS usa un archivo applicationhost.config de todo el equipo en el que los usuarios estándar no pueden escribir, solo los administradores pueden realizar las mismas tareas en IIS. (Dado que IIS se usa normalmente en equipos servidor, esto no suele ser una restricción desde el punto de vista de un desarrollador individual).

Inicio y detención de sitios

Con IIS Express, un usuario estándar puede iniciar y detener su servidor web a voluntad. Esto se puede hacer mediante WebMatrix y Visual Studio 2010 SP1 Beta, o mediante el ejecutable de comandos de iisexpress.exe. Una aplicación de bandeja del sistema de Windows también permite a los usuarios examinar y apagar instancias de IIS Express.

Con IIS, los usuarios no pueden iniciar su sitio web directamente. En su lugar, el servicio de activación de procesos de trabajo (WAS) es responsable de activar sitios web. Dado que WAS es un servicio del sistema, solo los administradores pueden iniciarlo o detenerlo.

Uso de SSL

La configuración del acceso a través de la capa de sockets seguros (SSL) requiere privilegios administrativos en IIS Express, al igual que en IIS. Sin embargo, el programa de instalación de IIS Express realiza las siguientes tareas que permiten a los usuarios estándar usar SSL con IIS Express:

  • Crea e instala automáticamente un certificado de servidor SSL autofirmado en el almacén de máquinas locales.
  • Configura HTTP.SYS para reservar puertos 44300 a 44399 para SSL. Las solicitudes SSL entrantes que usan localhost y uno de los puertos del intervalo especificado se asocian automáticamente con el certificado autofirmado.

(HTTP.SYS es un componente de sistema operativo que controla SSL para IIS e IIS Express. El programa de instalación puede configurar HTTP.SYS porque el programa de instalación se ejecuta con privilegios elevados).

Por lo tanto, el uso de SSL para probar un sitio web con IIS Express es tan sencillo como agregar un enlace como el siguiente al elemento de sitio en applicationhost.config:

<binding protocol="https" bindingInformation="*:44300:localhost" />

Esto solo funciona para el tráfico local (solicitudes localhost) y para el rango de puertos especificado. Los privilegios de administrador son necesarios para configurar un certificado SSL personalizado o para ejecutar SSL mediante un puerto fuera del rango especificado.

Resumen

IIS Express permite a los usuarios no administrativos realizar las siguientes tareas:

  • Ejecute un sitio web localmente y use un número de puerto mayor que 1024.
  • Agregue, quite y modifique sitios web, aplicaciones y directorios virtuales.
  • Inicie y detenga el servidor web.
  • Agregue compatibilidad con SSL para probar un sitio web mediante un certificado SSL autofirmado preinstalado y un puerto entre 44300 y 44399.

Se requieren privilegios administrativos para realizar las siguientes tareas:

  • Use un puerto reservado como 80 o 443.
  • Atender solicitudes de tráfico externo.
  • Configure un certificado SSL personalizado.
  • Ejecute SSL mediante un puerto fuera del intervalo de 44300 a 44399.