En esta entrada veremos como crear un sitio web y configurarlo para utilizar certificados. Esto nos permitirá hacer seguro el acceso al servidor, mediante seguridad basada en el transporte, es decir, utilizar un certificado de servidor para encriptar las comunicaciones (mediante SSL) y autenticar los clientes mediante certificados de cliente.
1. Dar permisos al certificado.
El primer paso es dotar de permisos a las certificados para las cuentas que van a ejecutarlo. Dado que los certificado se va a utilizar desde IIS, va a ser necesario que la cuenta que ejecuta los procesos de IIS (“NETWORK SERVICE” en Windows Server y “ASPNET” en “Windows XP”), tenga permisos para leer los ficheros de clave privada de los certificados (en la entrada anterior explicamos como instalarlos).
Estos ficheros de clave privada se encuentran en la siguiente ruta:
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\ MachineKeys
Podemos identificar los que nos interesan mediante la fecha y hora de creación (fecha y hora en la que los hayamos instalado). Para cada fichero, accedemos a sus propiedades del fichero y en la pestaña de seguridad se agrega el nombre de usuario: “NETWORK SERVICE” (de la maquina local) y los permisos: “Read” y “Read & execute”.
Este punto también se puede realizar mediante comandos. Mediante la herramienta FindPrivateKey del SDK de Windows obtenemos la ruta y el nombre del fichero con la clave privada.
FindPrivateKey.exe My LocalMachine –n "CN=NombreServidor"
Posteriormente, con la herramienta cacls.exe (ubicada en c:\windows\System32), se dan permisos al fichero:
cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\?" /E /G "NETWORK SERVICE":R
2. Crear el sitio web.
Lo primero es crear un sitio web, para ello hay que abrir los “Servicios de Internet Information Server” dentro de “Herramientas Administrativas” del “Panel de Control” o ejecutar directamente el programa inetmgr.exe. Desde el gestor del IIS, en la carpeta Web Sites del servidor local, seleccionar la opción de crear un nuevo sitio Web.
Aparece una pantalla que nos solicita el nombre del sitio web. Introducimos el nombre que queramos darle al sitio y pulsamos siguiente.
En la nueva pantalla, se nos pide la IP (dejar valor por defecto), el puerto TCP (introducir un valor que este libre, el valor por defecto: 80 no suele servir). El último campo (cabecera de host) se puede dejar vacío. Pulsar el botón de siguiente, aparece otra pantalla en la que se nos solicita la ruta donde estarán almacenados los archivos del sitio web. Como de momento solo queremos probar el tema de seguridad, nos sirve cualquier carpeta vacía.
En esta pantalla, también aparece un check para habilitar el acceso anónimo al sitio web. En nuestro caso lo dejaremos habilitado. Posteriormente se puede modificar. El tener acceso anónimo o no al sitio web depende del escenario. En nuestro caso, utilizamos certificados de cliente (porque por ejemplo, los clientes están en otra red y no tienen cuentas en el servidor), por lo que el acceso anónimo es lógico.
Finalmente aparece una pantalla en la que se nos solicitan los permisos para el sitio. Por defecto aparece seleccionado solo permisos de lectura.
3. Configurar el sitio web.
Una vez creado el sitio web, se ha añadido un nuevo elemento al árbol, es decir, un nuevo elemento en la carpeta Web Sites. Seleccionamos dicho elementos, pulsamos con el botón derecho y seleccionamos el elemento propiedades del menú contextual.
Aparece una ventana con varias pestañas. En la primera, podemos ver los valores que hemos dado a la descripción y al puerto TCP. Para utilizar SSL es necesario asignar un puerto SSL libre (en nuestro caso 456, el valor por defecto es 444).
Posteriormente, en la pestaña “Directory Security”, seleccionar “Server Certificate” y asignar un certificado existente. Posteriormente, pulsar el boton “Edit” y seleccionar “Require secure channel” (SSL) y “Require 128 bit encription”. En client certificates “Require client certificates”