Este tutorial consta de 3 partes, a continuación podrás ver los pasos generales que se realizan en cada parte:

Parte 1

Parte 2

Parte 3

En la parte 1 de este tutorial, vimos cómo configurar nuestra Vnet en Microsoft Azure y cómo crear el gateway.

En esta parte 2 nos enfocaremos en realmente entender el enredo de los certificados en lo que respecta a cómo los usa el gateway de Azure para autenticar a los usuarios.

No nos limitaremos a pegar comandos sin saber qué es lo que estamos haciendo.

Microsoft Azure utiliza SSTP para establecer el VPN de cliente a sitio, este protocolo utiliza SSL como protocolo de transporte, con esto logramos que nuestros clientes se puedan conectar prácticamente desde cualquier lugar que permita tráfico  HTTPS, algo que no podíamos hacer con VPNs basados en PPTP o IPsec.

El gateway de Azure, utiliza certificados digitales para autenticar a los clientes cuando estos se conectan.

En la siguiente gráfica, verás una versión simplificada del proceso de autenticación entre el gateway de Azure y un cliente utilizando certificados digitales.

  1. El cliente inicia una conexión de VPN utilizando SSTP al puerto 443 del gateway.
  2. El gateway, le solicita al cliente que se autentique utilizando algún certificado que haya sido generado por alguna de las entidades certificadoras que se hayan instalado en el gateway, en este caso, el gateway tiene el certificado raíz TutorMas CA Root Certificate instalado en su base de datos de certificados de confianza.
  3. El cliente utiliza la llave privada del certificado VictorBurgos Certificate para demostrar que es un usuario válido y tiene permisos para conectarse.
  4. El gateway verifica la validez de la información enviada por el cliente usando el certificado raíz que tiene almacenado localmente y si todo está bien, le permite conectarse.
Nota: Ten en cuenta que ni el cliente, ni el gateway tienen la llave privada del certificado raíz TutorMas CA Root Certificate, esta llave privada, debe estar almacenada en nuestra entidad certificadora, esto lo veremos más adelante.
También es importante tener en cuenta que tanto el cliente como el gateway tienen almacenado el certificado TutorMas CA Root Certificate instalado en sus entidades certificadoras de confianza.

Muy bien, ahora que sabemos lo que necesitamos, vamos a crear los certificados necesarios.

Creación de un certificado raíz auto-firmado utilizando XCA

Si buscas cómo crear los certificados para Azure, vas a encontrar que prácticamente todos utilizan una herramienta llamada makecert.exe, si bien esta herramienta sirve para la tarea en cuestión, Microsoft nos obliga a descargar e instalar Visual Studio para poder utilizar esta simple aplicación, algunos sitios te permiten descargar únicamente la herramienta makecert.exe pero por seguridad prefiero no descargar ejecutables de otros sitios.

También podríamos utilizar nuestra entidad certificadora instalada en nuestro dominio de Active Directory, pero, recordemos que el gateway sólo verifica que el cliente tenga un certificado con la llave privada que haya sido generado por el CA y dependiendo de la configuración de nuestra CA, es posible que cualquier usuario del dominio solicite un certificado de manera automática y pueda conectarse a la red de Azure sin nuestra autorización.

Con el fin de ahorrarnos la tarea de descargar e instalar Visual Studio y para lograr tener mayor control sobre quién se conecta al gateway de Azure, vamos a utilizar una herramienta que posiblemente no conozcas, se llama X Certificate and Key Management, no tengo idea de dónde sale la «A» de las siglas XCA.

Esta herramienta me la mostró un colega llamado Gabriel Paniagua y él la utiliza para generar certificados y llaves privadas/públicas para instalar en sus servidores web, ssh, ESX, etc para asegurar sus conexiones.

XCA es una utilidad que nos permite crear una entidad certificadora en nuestra propia máquina con la cual podemos generar y firmar nuevos certificados para utilizarlo en toda clase de escenarios.

Para comenzar, descarga e instala esta herramienta en tu máquina, no voy a detallar los pasos ya que el proceso no tiene ninguna ciencia, básicamente es lo que yo llamo una «instalación porno», puro yes, yes, yes.

Una vez tengas instalado XCA, debes crear una nueva base de datos donde se almacenarán de manera segura las llaves privadas/públicas y los certificados que vamos generando.

Selecciona File > New DataBase

Especifica una ruta y un nombre para la base de datos.

Luego debes asignar una clave por medio de la cual se estará protegiendo esta base de datos para prevenir que un usuario no autorizado tenga acceso a tus certificados.

Inicialmente crearemos la llave privada para el certificado raíz de nuestra nueva CA.

Haz clic en el tab de Private Keys, luego haz clic en New Key, pon un nombre descriptivo para esta nueva llave privada, en mi caso, puse el nombre TutorMas CA Root Certificate private key y haz clic en create.

Deja el Keytype en RSA y el Keysize en 2048 bit.

Recibirás una confirmación de que se ha creado la llave privada con éxito.

Ahora crearemos el certificado raíz para nuestra entidad certificadora local.

Haz clic en el tab de Certificates, luego haz clic en New Certificate, en el campo Template for the new certificate verifica que esté seleccionado [default] CA, haz clic en Apply all para que los otros tabs se actualicen con los parámetros del template [default] CA, luego haz clic en el tab de Subject.

En el tab de Subject, puedes poner tanta información como quieras, pero como mínimo, debes llenar el campo commonName y seleccionar que se use la llave privada que creamos en el paso anterior, para terminar haz clic en OK.

Recibirás una notificación indicando que se ha creado el certificado correctamente.

En este momento tenemos creado el certificado raíz con la llave privada y la pública.

Posteriormente vamos a exportar este certificado SIN LA LLAVE PRIVADA para instalarlo en el gateway de azure y en las máquinas de los usuarios que se vayan a conectar.

Creación de un certificado de cliente derivado del certificado raíz

En este paso vamos a crear un nuevo certificado de usuario que posteriormente vamos a instalar en la máquina del usuario en el almacén de certificados personales.

Para comenzar, ve al tab de Private Keys y tal como lo hicimos anteriormente, crea una nueva llave privada para el certificado que estamos a punto de crear.

Al final de este paso, contarás con 2 llaves privadas en tu base de datos tal como se ve en la siguiente imagen.

Para crear el certificado de cliente derivado del certificado raíz, ve al tab de Certificates,  haz clic derecho en el certificado raíz y selecciona New

Verifica que en el campo Template for the new certificate esté seleccionada la opción [default] HTTPS_client, haz clic en Apply all para actualizar los otros tabs con los parámetros del template y ve al tab de subject.

Nota: En el campo de Signing, puedes verificar que se usará el certificado TutorMas CA Root Certificate para firmar este nuevo certificado, de esta manera es que el gateway de Azure puede verificar que el certificado ha sido firmado por la entidad certificadora ya que ambos están relacionados matemáticamente.

En el campo de Subject, puedes poner toda la información que desees, pero como mínimo, debes especificar el commonName del certificado.

Verifica también que se esté usando la llave privada correcta y haz clie en OK.

En este momento te deben aparecer 2 certificados en tu base de datos de XCA.

Exportar certificados para gateway de Azure y para usuario

Los 2 certificado que tenemos actualmente se deben exportar en 2 formatos diferentes, ten en cuenta la siguiente tabla:

Certificado Formato a exportar el certificado Llaves necesarias Instalar en:
TutorMas CA Root Certificate DER (*.cer) Llave pública
  • Gateway de Azure
  • Máquina del usuario (user certificate store)
VictorBurgos Certificate PKCS #12 chain (*.p12) Llave pública y llave privada
  • Máquina del usuario (computer certificate store)

Para exportar el certificado raíz, haz clic sobre él para seleccionarlo, haz clic en export, asigna un nombre para el archivo, verifica que el formato para exportar sea DER (*.cer) que es el formato que solicita Microsoft Azure y haz clic en OK, este formato solamente contiene el certificado y la llave pública.

El certificado de usuario debe contener tanto la llave pública como la llave privada, por lo que debemos exportarlo en un formato que incluya a ambas (PKCS 12).

Para exportar el certificado de usuario, haz clic sobre él para seleccionarlo, haz clic en export, asigna un nombre para el archivo, verifica que el formato para exportar sea PKCS # 12 chain (*.p12) y haz clic en OK.

Para proteger la llave privada de este certificado, te aparecerá una nueva ventana donde debes indicar una clave para cifrar el archivo.

Al finalizar debes contar con los 2 archivos que aparecen a continuación, uno .p12 y el otro .cer:

En la parte 3 veremos cómo instalar los certificados y finalmente estableceremos el túnel de VPN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *