Introducción a EasyRSA (la PKI de OpenVPN)
Por Arrecio
Un bueno lugar para empezar es hablar del estándar X.509. Este es un estándar de certificado electrónico que por su anatomía requiere una serie de partes que en conjunto se denomina Infraestructura de Clave Pública o PKI. La estructura del X.509 es la siguiente:
En la figura anterior el sujeto es el dueño del certificado y el emisor es la Autoridad de Certificación (CA). En una PKI la expedición de un certificado válido conlleva dos partes, la primera es la solicitud del certificado o certificate request, momento en el que se proporcionan los datos del sujeto quizás las claves pública y privada (ver nota siguiente).
Algunos procedimientos de generación de certificados permiten que el usuario establezca sus propias claves pública o privada, pero otros exigen que se utilicen los generados por la
CA, comprometiéndose esta a destruir la clave privada una vez entregada esta al sujeto.
La segunda parte de la emisión consiste en que la CA rellena diversos campos dentro de los datos del certificado como el número de serie único dentro de un determinado emisor y la identificación propia de la CA, el periodo de validez del certificado y los casos para los que puede ser usado o propósitos del certificado. Finalmente establece los algoritmos de Firma Digital que la propia CA usa para firmar el certificado. Una vez firmado el certificado este se podrá usar para identificar al sujeto, además de establecer un canal de comunicación seguro con el mismo, en todos aquellos sitios que confían en la CA emisora del certificado.
Por ejemplo en España para poder acceder a las páginas gubernamentales personándose como persona física (o jurídica) debes estar en posesión de un certificado raíz firmado por la Fábrica Nacional de Moneda y Timbre quien actúa de
CAen este caso.
El procedimiento de firma digital consiste en obtener un resumen de los datos propios del certificado en forma de código o valor hash que se cifra con la clave privada de la CA mediante algún algoritmo de cifrado asimétrico que debe ser conocido.
La comprobación de la firma digital conlleva el paso contrario. Mediante la utilización el mismo algoritmo de firma (funciones hash y de cifrado) se desencripta la firma utilizando la clave pública de la CA y se obtiene el valor hash de los datos del certificado. Si ambos valores coinciden el certificado es válido.
Un algoritmo de firma muy utilizado es el
sha256RSAque utiliza SHA-256 comofunción hashy [RSA])https://es.wikipedia.org/wiki/RSA) como sistema de cifrado.
El resultado final es un archivo que puede estar en diversos formatos. Uno muy conocido es el .p12 que contiene además de la clave pública del sujeto también su clave privada, aunque protegida por contraseña.
La Infraestructura de Clave Pública de OpenVPN (EasyRSA)
El certificado digital es la piedra angular de una Infraestructura de Clave Pública o PKI. Dentro de una red global como es Internet esta estructura puede ser algo tan loco como el siguiente dibujo:
No hacerle mucho caso, se ha complicado su interpretación intencionalmente
Sin embargo, si lo que vamos a hacer es trabajar en una Red Privada Virtual o VPN tampoco vamos a necesitar de tanta parafernalia, empezando por Autoridades ya sean Certificadoras o Validadoras (las que se encargan de verificar que el certificado no ha sido revocado antes de su fin de vigencia, lo que mantienen en una Lista de Revocación de Certificados o CSL) de renombre, una vez que lo que pretendemos es gestionar una pequeña red local de confianza, aunque físicamente se extienda cruzando muchos servidores de terceros. Para generar canales de comunicación seguros con autenticación de miembros podemos configurar nuestra propia PKI interna.
Para el caso de OpenVPN este implementación de Red Privada Virtual utiliza su propio PKI llamado EasyRSA. EasyRSA no es más que un conjunto de scripts aunados en un mismo ejecutable llamado easyrsa con el que se generan los certificados previa generación de un sistema de directorios y archivos auxiliares.
El objetivo de esta entrada no es el de profundizar en EasyRSA sino tan sólo de hablar de su existencia. Dejo en el siguiente gráfico un esquema con los pasos para generar certificados desde cero, incluyendo la inicialización de la PKI y la creación de la CA, paso que sólo es necesario realizar una vez por cada red virtual:
En el entorno EasyRSA se condensan muchas acciones en una sola. En una PKI compleja como la vista anteriormente, cualquier sujeto debe iniciar primero una solicitud de certificados a una CA concreta pero esta no la atiende inicialmente yq que querrá realizar una verificación de la identidad de la persona que consiste en una cotejación entre los datos de la solicitud, es decir quien dice ser, con quien realmente es, lo que se hace a través de una Autoridad de Registro o RA. Tras esta comprobación, que se entiende comunicada a la CA, se emite el certificado. En EasyRSA no existe RA y simplemente la tramitación de la solicitud del certificado conlleva directamente su aprobación y firma mediante un único paso que se conoce como Certificate Signin Request o CSR.
Aunque podríamos realizar toda la acción mediante un único paso, tal y como vemos en el dibujo es necesario realizar dos ejecuciones del script (puntos 3 y 4). El propósito de separar los pasos está en facilitar que podamos generar las solicitudes en la parte del cliente para luego ser enviadas al servidor o el equipo que aloja la CA, quien podrá importar la solicitud (punto 3.1, opcional) previo a la firma.
Obtenidos los diferentes certificados ya podríamos distribuirlos entre las partes, ya sean el servidor o los clientes, para que sean puedan ser usados por OpenVPN en sus conexiones.
Notar que aunque no ha sido incluido en el dibujo, EasyRSA también implementa un sistema de lista de certificados revocados (CSL). Dejo al lector que se ilustre por su cuenta acerca de esto.
¿Ya? ¿Y ahora qué?
Como dije en la introducción, si quieres realmente configurar tu propia red privada virtual con OpenVPN lo mejor es que sigas algún tutorial de los muchos que existen. Si has fijado los conceptos de este artículo seguramente habrás conseguido que gran parte de los pasos los realices sabiendo lo que estás haciendo, y no como en mi caso durante mis primeras experiencias.
Referencias: rfc5280 y para los que somos un poco más torpes