Windows Server 2012R2: entidad certificadora I

En este nuevo post, vamos a ver el proceso de creación de nuestra propia entidad certificadora mediante un Windows Server 2012R2. El objetivo es disponer de un sistema que nos permita gestionar certificados propios a nivel de una intranet, tanto para los equipos como para los usuarios del dominio. Por ser para uso interno, no necesitaremos utilizar los servicios de una autoridad de certificación externa como Symantec.

Realizaremos la instalación sobre un equipo que ya tiene el rol de controlador de dominio instalado y configurado.

win2012CA01Ahora tendremos que seleccionar qué servicios queremos implementar, en nuestro caso vamos a instalar además del servicio de Autoridad de certificación, el sistema para permitir que los usuarios puedan acceder desde una página web al servicio de certificación. En las páginas de Technet, teneis la información detallada de todas las características que se pueden configurar.

win2012CA02Una vez seleccionadas las características, se inicia el proceso de configuración. En primer lugar, nos solicita las credenciales para configurar, en nuestro caso las del administrador del DC.

win2012CA03Ahora se inicia propiamente el proceso de configuración, donde debemos marcar los dos servicios que queremos configurar (el resto como no los instalamos no los podemos seleccionar).

win2012CA04A continuación, elegimos qué tipo de entidad certificadora queremos. Puede ser empresarial (será nuestro caso) ligada a un dominio Active Directory o independiente (standalone).

Seleccionamos que sea una Root CA o Autoridad Raíz, puesto que generará sus propios certificados. Es posible también configurar una CA delegada que emite certificados de una autoridad raíz. En este caso, nuestra CA debería disponer de un certificado emitido para tal fin por la Root CA correspondiente.

Ahora viene el proceso de configurar la clave privada. En primer lugar debemos crearla, porque en nuestro caso no disponemos de una.

win2012CA07Configuramos sus características, básicamente el tipo de clave, la longitud de la clave y el algoritmo de hash a emplear.

win2012CA08A continuación comprobamos los datos referidos a la CA: nombre, vigencia (aquí es muy importante tener en cuenta que la vigencia de la CA siempre tiene que ser mayor a la de los certificados que queremos emitir) y la ubicación donde se guardará la estructura de la autoridad.

win2012CA09win2012CA10

win2012CA11Antes de realizar la configuración, el sistema nos muestra una pantalla con un resumen de las selecciones realizadas y nos pide confirmar. Una vez hecho, se nos muestra una pantalla indicando que el proceso ha finalizado con éxito.

win2012CA12win2012CA13Si entramos ahora la  gestión de la autoridad certificadora, podemos observar la estructura creada.

win2012CA14win2012CA15Observamos que ya disponemos de una serie de plantillas (templates) de certificados para las situaciones más habituales (usuarios, DC, Web Servers, etc.).

Podemos ver también desde el propio servidor, el portal por defecto para permitir el acceso a la entidad certificadora vía web.

win2012CA16Ya tenemos nuestra entidad certificadora preparada, en el siguiente artículo veremos el proceso de solicitud de certificados y su aplicación en casos concretos.

Anuncios

IIS 8.5 (y IV): Implementando SSL

En este último post de esta serie donde estamos repasando las funcionalidades de IIS 8.5, nos vamos a centrar en la creación de páginas seguras mediante el protocolo https. En la actualidad la mayor parte de páginas donde necesitamos validarnos emplean este protocolo para proteger nuestra privacidad, así mismo los buscadores como Google o Bing, permiten realizar las búsquedas también en modo seguro.

El https está basado en TLS/SSL que es el protocolo que se encarga de dar seguridad al protocolo de hipertexto. TLS/SSL proporciona privacidad (cifrado de las comunicaciones), integridad y autenticación. Desde que Netscape desarrollara el SSL por el año 1996, se ha convertido en un auténtico estándard de la seguridad en las comunicaciones web.

En este video de Intypedia, teneis una introducción a este protocolo y a su funcionamiento:

Si nos centramos en nuestro caso práctico, vamos a ver cómo implementar una página segura con IIS 8.5.

El primer punto a considerar, es qué tipo de certificados vamos a utilizar, en webs públicas usaremos certificados emitidos por entidades de certificación como Symantec o Comodo que son aceptadas por los navegadores y por tanto no generan ningún aviso al usuario. Para aplicaciones internas, como una intranet, podemos crear nuestros propios certificados.

Una de las grandes novedades que apareció en 2012 fue la posibilidad de disponer de diversas sites seguras en el servidor. Anteriormente, debíamos definir IPs virtuales en el servidor y asignar a cada página segura una IP diferente.

En primer lugar vamos a crear un certificado propio, para ello en el gestor de IIS vamos al panel de configuración para el servidor y clicamos sobre Server Certificates.

iis_secure01En la barra de la derecha, seleccionamos la opción de crear un certificado autofirmado (Self-Signed Certificate):

iis_secure02

Nos solicita el nombre que deseamos poner al certificado y donde se quiere ubicar, en este caso Web Hosting

iis_secure03

Ahora, vamos al site que queremos securizar y en la barra de la derecha, seleccionamos Edit site -> Bindings y añadimos un nuevo binding o enlace, donde configuraremos la conexión segura y indicamos el certificado a usar:

iis_secure04Vamos a la configuración de SSL y seleccionamos la opción de requerir SSL. Aquí nos da la opción de solicitar o no certificado al cliente. Habitualmente, los clientes no tendrán certificado, pero si queremos realizar un site donde los usuarios deban usar un certificado propio para poder acceder, sería aquí donde deberíamos habilitar la opción.

iis_secure05.:

Probamos ahora la conexión con nuestro site y observamos las características de nuestro certificado:

iis_secure06Si ahora intentamos acceder al mismo site sin poner https, observamos como aparece un error 403, de manera que sería conveniente que independentiemente que el usuario introduzaca https o no, se abra siempre la conexión en mode seguro. Configurar este comportamiento, es extremadamente sencillo: nos vamos a personalizar los errores del site y para el error 403, seleccionamos redirección y como URI indicamos https://url de nuestro site.

Si lo que queremos es utilizar un certificado comercial, el proceso también es muy sencillo, en la opción de certificados, seleccionamos la opción de crear una petición de certificado (request). Posteriormente, nos vamos a la autoridad de certificación que elijamos e iniciar el proceso de solicitud, en este paso nos va a pedir copiar el contenido del archivo de solicitud en un textbox.

Una vez finalizado el proceso, nos enviarán un archivo que será el que tendremos que seleccionar desde la opción Complete Certificate Request. De esta manera, ya tendremos nuestro certificado listo para ser utilizado.

IIS 8.5 (III): Autenticación

Seguimos con nuestra serie de posts dedicados a IIS 8.5, en esta ocasión veremos qué métodos de autenticación nos proporciona el servidor web para validarnos contra nuestros sitios web.

La autenticación de los usuarios es una de las tareas más importantes a la que se enfrentan los adminitradores de sitios web. Métodos para hacerlo hay diversos, pero en general podemos hacer una división entre los métodos que gestiona el código del web o los que se basan en el servicio web.

Ejemplos de los primeros son el muy extendido de emplear una base de datos para almacenar los campos usuario y password. Mediante un formulario y una consulta a la BD realizamos la validación. Otra opciones de validación por código es emplear es realizar consultas LDAP a un servicio de directorio o incluso emplear métodos como OAuth que permiten utilitzar sistemas de autenticación sobre IDs.

Por otro lado, podemos emplear las propias funcionalidades del servidor web para realizar dicha autenticación, es decir, que en lugar de desarrollar en la aplicación la lógica para autenticar usuarios, emplearemos al IIS.

En concreto, empleando IIS 8.5 tenemos a nuestra disposición diferentes opciones, de las cuales en concreto implementaremos dos a modo de ejemplo:

  • Autenticación básica: se basa en la especificación del protocolo http y envía las credenciales en formato usuario:password codificadas en formato Base64. Evidentemente, desde un punto de vista de seguridad, es una autenticación con una seguridad muy baja, al poder fácilmente obtenerse las credenciales. Por ello, no es un sistema que se recomiende y en caso de usarse, debería emplearse conexión segura.

  • Autenticación por desafío (digest): se basa en la especificación RFC 2619 utilizando el sistema Radius. Se envía el password del usuario en forma de hash MD5 y sólo puede utilizarse con cuentas de Directorio Activo. También se recomienda utilizar una conexión segura para securizar el proceso de autenticación.

  • Autenticación windows: es el sistema más sofisticado ya que emplea dos mecanismos de autenticación NTLMv2 y Kerberos.  El primer caso, lo emplea caso que realicemos la autenticación contra cuentas locales. El sistema Kerberos, se emplea con las cuentas de Directorio Activo y tiene la ventaja de permitir una autenticación segura. Este método es el que se recomienda para intranets.

  • Autenticación por certificado: en este caso, el cliente presenta un certificado y dentro de la negociación TLS/SSL se emplea para verificar su identidad.

Una vez hemos visto esta pequeña introducción, pasamos a la parte práctica. En primer lugar vamos a configurar una autenticación básica, que va a emplear credenciales bien locales de máquina o bien de directorio, si no se indica nada y el server está integrado en un directorio, se tomará éste por defecto.

Para configurarlo, nos vamos al panel del site que queremos editar y clicamos sobre Authentication o Autenticación y seleccionamos básica y muy importante, desactivamos la autenticación anónima.

auth

iis_aut_basEn la configuración de la autenticación nos pregunta por el dominio o bien por el Realm de Kerberos, ponemos el dominio AD que hemos creado. Si probamos ahora a entrar a dicha página:

iis_aut_bas2

A continuación, vamos a configurar la autenticación implícita o digest. Cambiamos el modo de autenticación de básica a digest y observamos como nos pregunta el Realm de autenticación, en nuestro caso utilizamos el dominio.

authdigest1Si observamos ahora la autenticación que nos solicita el site:
authdigest2Por último, la autenticación por Windows es similar a nivel de configuración no nos pregunta nada en principio porque ya toma las credenciales del sistema, sí que tiene una serie de configuraciones interesantes como la protección extendida que define el nivel de autenticación en modo Kernel o no. Cuando entramos en el site:

auth_win2En el próximo post, veremos cómo configurar las páginas mediante TLS/SSL.