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.

SSL: Creando una entidad certificadora

En posts anteriores hemos visto cómo crear servicios web seguros utilizando certificados. Los certificados era los por defecto de SSL en Linux o bien generabamos certificados autofirmados para el caso de IIS y el hecho que debíamos solicitar un certificado a una entidad certificadora (CA) para disponer de certificados válidos para operar en Internet. En este enlace teneis una buena descripción de qué es una infraestructura de clave pública o PKI.

En esta ocasión vamos a ver cómo crear nuestra propia entidad de certificación ( sobre un Debian 6, pero el procedimiento es idéntico si empleamos un Ubuntu). Posteriormente, vamos a emplear esta entidad de certificación para generar un certificado de servidor para otra máquina que la empleará para un servicio Apache. Esta situación puede ser útil si queremos desplegar en una intranet un sistema de certificados, tanto para equipos como para usuarios.

En primer lugar vamos a crear la entidad certificadora, para ello editamos el archivo /etc/ssl/openssl.cnf del equipo que se convertirá en autoridad de certificación y realizaremos las siguientes modificaciones:

ssl01Estamos indicando donde se va a crear la infraestructura de nuestra entidad de certificación, recorriendo el archivo podemos editar otras características, como por ejemplo la duración por defecto de los certificados ( 365 días es el valor inicial), la longitud de la clave, etc.

El siguiente paso, es crear la estructura de carpetas de la entidad de certificación y crear los archivos de gestión de los certificados creados, el archivo serial y el index.txt.

ssl03Ahora vamos a crear el certificado para la entidad certificadora, este certificado será el que después se deberá exportar a los diferentes servidores que vayan a utilizar sus certificados:

ssl04Ya tenemos creada nuestra entidad certificadora. Ahora vamos a una segunda máquina, en este caso un Ubuntu Desktop que hará las funciones de un servidor web que va a solicitar un certificado, para ello creamos una petición .csr y una clave privada micert.key. Para evitar el problema que la clave privada utilice una contraseña, que nos obligaría a introducirla cada vez que reiniciemos el servicio, se emplea el parámetro -nodes.

ssl05En la petición se nos requiere la información relativa al equipo o dominio para el que se va a solicitar el certificado:

ssl06Ahora deberíamos enviar este archivo .csr al servidor de la entidad certificadora, una vez que ésta lo recibe, generaremos el certificado a partir de él:

ssl07Como resultado de este comando, no sale un mensaje con la información del certificado generado y nos pide la confirmación de si queremos firmarlo.

ssl08Ahora deberíamos enviar al que será nuestro servidor web y lo deberíamos copiar en /etc/ssl/certs. Así mismo comprobamos la presencia de la clave privada del servidor.

ssl09Ahora tenemos que convertir nuestra entidad certificadora, en una entidad certificadora de confianza para el servidor web. Para ello enviamos el certificado de la CA (lo he renombrado como waytoit.pem para facilitar su localización) y lo copiamos en /etc/ssl/certs. Ahora hay que hacer un paso adicional para que funcione, tenemos que ver su hash y crerar un enlace al certificado que tenga como nombre su número de hash.0.

ssl11Podeis comprobar como para los diferentes certificados que ya están instalados, existe dicho enlace.

Comprobamos ahora el certificado que hemos solicitado:

ssl13Si no nos da ningún error, editamos el archivo de configuración de nuestra página segura para utilizar nuestro flamante certificado:

ssl14Por último, comprobamos desde el navegador las características de nuestro certificado:

ssl15Desde nuestra entidad certificadora podremos crear certificados tanto para usuarios como para máquinas, así como revocarlos para que dejen de ser válidos.

Fuentes: