Gestión de SSL con IIS
Gestión de SSL con IIS
Esta actividad práctica corresponde a este tema.
Ver las CA en los navegadores
Con IE:
Para ver las CA válidas y reconocidas por este navegador debemos ir a Herramientas – Opciones de Internet – Contenido – Certificados –Autoridades Certificadoras raíz de Confianza:

Entidades certificadoras de confianza registradas en Internet Explorer

Entidades certificadoras de confianza registradas en Firefox
Con Firefox (imagen anterior):
La opción que soporta esta operación está en Herramientas - Opciones - Avanzados - Ver Certificados – Autoridades.
Activar SSL en el servidor web
Para ello lo primero que debemos hacer es desactivar URLScan si estuviese activo, ya que puede plantear conflictos con SSL. Aunque se puedan arreglar adaptando la configuración, optaremos por esta opción más sencilla para nuestras pruebas. Para ello, basta con ir al IISManager y quitarlo como filtro ISAPI. Si lo queremos activar de nuevo, solo debemos agregar la dll correspondiente. Esta es la forma general de eliminar filtros ISAPI del servidor.

Hecho esto, configuraremos a continuación IIS para que admita tráfico HTTPS. Para ello, lo primero que necesitamos es pedir un certificado para el servidor y por tanto necesitamos una CA (Certification Authority, una autoridad certificadora) que nos lo emita. El servidor 2003 de nuestra infraestructura de pruebas ya tiene software de CA instalado. Este software es un servicio que está incluido de serie para instalar en Windows 2003 Server y por ello no tenemos que adquirir un producto independiente. No es lo adecuado para una web pública, pero es gratis y sirve perfectamente en intranets, donde nuestros clientes conozcan la CA certificadora y sepan que pueden confiar en ella. De todas formas, podemos dejar público el certificado de nuestra CA para que los clientes lo instalen y así cualquiera de ellos (tanto si son clientes de una intranet como si vienen de Internet) puedan configurar su browser para confiar en nuestra autoridad certificadora.
En caso de no estar instalado software de CA en el servidor, este se instalaría con: Panel de Control – Agregar o Quitar Programas – Componentes de Windows – Servicios de Certificate Server:

Instalando los servicios necesarios para convertir Windows 2003 en una autoridad certificadora
En nuestra configuración de pruebas hemos creado una CA raíz de empresa a la que llamamos WEBCERT . Para hacer esto es necesario activar páginas ASP, lo que puede ir contra la política de seguridad de la empresa o la política que queremos para nuestro IIS, ya que hay que activar la extensión de servicio correspondiente. No obstante, en este caso lo haremos para poder seguir instalando esta funcionalidad con normalidad.
Tras tener una CA operativa, podremos solicitar el certificado necesario para IIS. Para ello, basta con ir a IIS Manager – Web a habilitar (la de por defecto en este caso) – propiedades – Seguridad de Directorios – Certificado de Servidor, tal y como se ve en la siguiente imagen:

Tras esto pulsamos en “Siguiente” y solicitamos crear un certificado nuevo, pidiéndolo inmediatamente al propio servidor, tal y como se ve en las siguientes imágenes:

Asistente para solicitar un certificado de servidor
Asistente para solicitar un certificado de servidor (II)
Asistente para solicitar un certificado de servidor (III): Envío inmediato de la petición a la CA
Ahora se nos solicitará un nombre para el certificado y una longitud en bits. 1024 es adecuado, aunque a mayor longitud mayor dificultad de desencriptación (a costa del rendimiento):

Asistente para solicitar un certificado de servidor (IV)
Posteriormente se nos pedirán datos de localización (Organización y Unidad Organizativa), que son solo cosméticos (para que los vea el usuario que examine el certificado):

Asistente para solicitar un certificado de servidor (V)
Luego debemos introducir exactamente el nombre del servidor web. Si la web fuese pública, tendríamos que usar el nombre de la web (www…..). Si el servidor web se va a identificar por una dirección IP (como es nuestro caso, donde tiene la IP 5.0.0.2), aquí deberíamos dar dicha IP para evitar uno de los errores que se le mostrará al cliente cuando se haga una solicitud del certificado. Aun así, el error de que el certificado no proviene de una autoridad certificadora de confianza sólo podremos quitarlo asignando como fiable dicha autoridad en el navegador que usemos. Para esta prueba pondremos el nombre del servidor de forma que se nos muestren varios errores en la solicitud del certificado para que podamos verlos, aunque la encriptación seguirá funcionando igualmente.

Asistente para solicitar un certificado de servidor (VI)
Lo siguiente que se nos solicita son más datos de localización “cosméticos”:

Asistente para solicitar un certificado de servidor (VII): Datos geográficos
El resto de opciones se pueden dejar por defecto. Con esto completamos la petición de certificado. Al hacerlo así se instala y configura sólo, tal y como se muestra en las imágenes siguientes:

Asistente para solicitar un certificado de servidor (VIII): Puerto SSL
Asistente para solicitar un certificado de servidor (IX): Selección de CA
Asistente para solicitar un certificado de servidor (X): Resumen final
Asistente para solicitar un certificado de servidor (XI): Creación final del certificado
|
NOTA: ESTA ES LA SECUENCIA DE PASOS NECESARIA PARA CREAR UNA SOLICITUD DE CERTIFICADO PARA ENVIARLO MÁS TARDE La secuencia de pasos a seguir es análoga a la anterior, sólo que esta vez tendremos que pulsar en “Preparar ahora pero enviarla más tarde” cuando lleguemos a ese punto. También nos seguirá pidiendo un nombre y una longitud en bits, siguiendo los mismos criterios anteriores. Para el resto de información del certificado podemos seguir los pasos mostrados anteriormente. Tras eso, debemos enviar la solicitud de certificado a la CA para que nos lo emita. Para ello, abriremos la web de solicitud de certificados que las CA de Windows habilitan cuando se instala (http://localhost/certsrv en la máquina donde esté instalada la CA) y seguimos los siguientes pasos:
Una vez terminado este proceso, la página debería funcionar exactamente igual que antes. |
Independientemente de si solicitamos el certificado inmediatamente o lo hacemos “en diferido”, hay una herramienta que nos permite saber si estos certificados se han instalado o no correctamente. Esta herramienta se llama SSLDiag [1] y podemos ejecutarlo sobre el servidor para ver que no nos muestra ningún mensaje en rojo (errores).

Comprobando nuestra configuración SSL con SSLDiag

Resultado de los test de SSLDiag : No hay ningún test en rojo (errores)
Probaremos ahora la web del servidor de pruebas sin encriptación http://5.0.0.2 y con ella (https://5.0.0.2) para ver las diferencias entre ambas peticiones. En este último caso vemos como se muestran los errores esperados del certificado (CA no reconocida y sitio erróneo al no haber introducido su IP, que es la forma de designar al sitio a falta de un servidor DNS activo). No obstante, podemos seguir con la petición puesto que conocemos y confiamos la entidad certificadora que está emitiendo los certificados (la nuestra) y el error con el sitio lo hemos introducido a sabiendas. ¿Funcionará igualmente SSL?, es decir, ¿se encripta la información enviada? Las siguientes imágenes muestran el proceso por el cual comprobamos que efectivamente lo hace:

Tráfico sin encriptar con http://5.0.0.2

Error de certificado: La CA no es de confianza cuando hacemos https ://5.0.0.2

Añadiendo una excepción de seguridad en Firefox 3 para admitir el certificado
Página encriptada mediante HTTPS
Tráfico encriptado por SSL gracias al certificado creado
| NOTA: HTTPS es un protocolo que surge de la combinación del protocolo HTTP sobre una conexión encriptada con SSL (Secure Socket Layer) o TLS (Transport Layer Security). TLS puede considerarse como una mejora de SSL. |
En la imagen anterior podemos ver que el tráfico ha sido encriptado por SSL gracias a nuestro certificado y que por tanto Wireshark es incapaz de interpretar el contenido de las tramas.
Otra opción que puede ser conveniente es hacer que un archivo o una parte de la web sólo se pueda ver mediante una conexión segura SSL. Nosotros lo haremos a modo de ejemplo con el index.html de la sección de “contacto” de la web. Para ello haremos clic derecho en el archivo index.html de dicha sección – Propiedades – Seguridad en archivos – Comunicaciones Seguras –Modificar y marcamos “Requerir canal seguro SSL”. Ahora podemos probar desde el cliente XP a acceder a ese archivo con y sin SSL y ver el resultado que nos devuelve el browser. Ésta es la forma de hacer que partes de una web sean siempre accesibles mediante conexiones seguras SSL y que nos permitiría hacer, por ejemplo, que nadie accediese a una pantalla de login empleando una conexión no segura y por tanto dejando sus credenciales de usuario vulnerables. Las siguientes tres imágenes muestran el proceso seguido:

Requiriendo un canal seguro para una parte de nuestra página
Conectándose mediante HTTP cuando se requiere HTTPS
Página protegida por HTTPS obligatoriamente
Por último, a la hora de usar certificados también podemos configurarlas siguientes opciones:
- Requerir 128 bits. Para browsers antiguos, no se recomienda por la menor seguridad que ofrece. En general debemos desactivar por razones de seguridad el soporte para browsers antiguos.
- Ignorar, aceptar o requerir certificados del cliente. Los certificados del cliente pueden usarse para identificar clientes que se conectan. Estos pueden asignarse a cuentas de usuario de Windows y de esta forma usarlas para controlar los permisos de acceso al archivo concreto. De esta forma usamos certificados para designar cuentas de usuario y con ellas asignamos permisos. Podemos ver el proceso completo de cómo instalarlos y usarlos en esta dirección: http://www.windowsecurity.com/articles/Client-Certificate-Authentication-IIS6.html
- Si hacemos esta misma operación sobre el sitio web predeterminado (o bien sobre un directorio del mismo) en lugar de un archivo suelto como antes, podemos comprobar que ahora también nos permite establecer una lista de CA de las que se van a aceptar en los certificados de cliente. De esta manera podemos limitar los clientes válidos de forma que sólo se admitan sus certificados si vienen de unas CA concretas. En caso de una intranet de empresa, podríamos incluso limitar las conexiones de los clientes a aquellos que presenten un certificado de nuestras CA internas (de todas o de algunas concretas), lo que redundaría en una mayor seguridad y una capacidad de personalización de los accesos superior.

Aceptando certificados de cliente
[1] http://www.microsoft.com/downloads/details.aspx?familyid=cabea1d0-5a10-41bc-83d4-06c814265282&displaylang=en








