Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

Generar certificados SSL de LetsEncrypt con Azure Automation

Generar certificados SSL de LetsEncrypt con Azure Automation

Gracias a Let’s Encrypt podemos tener todos los certificados SSL que necesitemos, gratis y de por vida. La única pega es que caducan cada 3 meses, y eso fácilmente nos puede tirar para atrás… Por suerte, gracias a la magia de PowerShell y Azure Automation podemos configurar la renovación periódica y nos podremos olvidar de esta tarea. Y lo mejor de todo es que es completamente compatible con cualquier tipo de Azure Web Apps!

En primer lugar, necesitamos tener una cuenta de Azure Automation en nuestra suscripción de Azure. Si ya la tenemos, nos podemos saltar el siguiente paso.

1. Agregar una cuenta de Azure Automation

Como comento en el párrafo anterior, este paso lo podemos omitir si ya contamos con una cuenta de Azure Automation en nuestra suscripción. De lo contrario, adelante con estos sencillos pasos:

  1. Iniciamos sesión en el portal de Azure.
  2. Podemos utilizar el buscador para encontrar “Cuentas de Automation”.
  3. Incluimos un nombre, suscripción, grupo de recursos y ubicación. En mi caso he utilizado “automation” tanto como nombre como grupo de recursos.

Esperamos a que se completen las implementaciones que hemos iniciado, y con esto ya habremos creado una cuenta de Azure Automation y podremos seguir adelante.

2. Desplegar GetSSL-LetsEncrypt en Azure

Este proceso también es muy sencillo. Para instalar el script en Azure Automation, debemos ir al siguiente enlace de la PowerShell Gallery:

https://www.powershellgallery.com/packages/GetSSL-LetsEncrypt

Asegurémonos de desplegar la versión más reciente! Pulsamos sobre el botón “Deploy to Azure Automation“, y automáticamente se nos abrirá el importado de Runbooks en Azure. Aquí seleccionamos nuestra cuenta de Automation y aceptamos.

En el momento que se inicie la implementación, comenzará la instalación de los módulos que GetSSL-LetsEncrypt necesita para funcionar. Si no contábamos con los módulos requeridos, esta implementación puede llegar a tardar unos 5 minutos en completarse. Si ya teníamos instalados los módulos, el proceso es instantáneo. En cualquier caso, se realizará de manera automática y desatendida.

3. Puesta en marcha de GetSSL Let’s Encrypt

Cuando se complete el despliegue de GetSSL-LetsEncrypt, vamos a configurar un credencial para automatizar los procesos.

  1. Nos vamos a Cuenta de Automation > Recursos Compartidos > Credenciales. Y hacemos clic en “+ Agregar una credencial”
  2. Creamos la cuenta especificando la cuenta de usuario y contraseña que utilizamos para acceder al Portal de Azure. Para el ejemplo he utilizado “dalonso”.
  3. Ahora vamos a Automatización de Procesos > Runbooks. Ahí veremos el Runbook de GetSSL-LetsEncrypt. Pulsamos en él.
  4. En la parte superior, veremos varios botones. Pulsamos en Editar, y en la siguiente página le damos directamente a Publicar, respondiendo a la pregunta.

Antes de programar la tarea, es interesante probar que todo funciona bien, así que pulsamos sobre el botón Iniciar, y rellenamos los parámetros requeridos:

  • Credential: Especificaremos la cuenta de credencial que hemos creado. En mi caso es dalonso
  • Domain: El dominio que queramos añadir el certificado
  • Registrationemail: El email donde recibiremos notificaciones de LetsEncrypt, como por ejemplo avisos de caducidad.
  • Resourcesgroup: Grupo de recursos
  • Webapp: Nombre de la instancia web
  • UneUnixFileVerification: Este es un valor opcional, comúnmente innecesario.

Cuando lo completemos, pulsamos el botón Aceptar.

Una vez haya finalizado, comprobaremos que no se haya producido errores. Si no se han producido errores, nos vamos al navegador y cargamos el sitio web que estamos instalando el certificado SSL…

Ou yeah! Ya tenemos nuestro sitio web funcionando con SSL! Ahora vamos a programar la renovación periódica.

4. Programar la renovación automática

Ahora sí! Para poder olvidarnos de tener que estar renovando el certificado cada tres meses, podemos crear una tarea programada que ejecute el script cada cierto tiempo.

  1. Nos vamos al Runbook de GetSSL-LetsEncrypt, y pulsamos sobre el botón Programar.
  2. Hacemos clic en Programación > Crear una programación nueva.
  3. Completamos los datos de la programación, incluimos un nombre que sea lo más descriptivo posible, una breve descripción, fecha de inicio, etc. Debemos tener en cuenta que la duración de los certificados es de 3 meses, así que programar una periodicidad de 80 días estaría bien. Cuando lo tengamos, pulsamos en crear.

Ahora añadimos los parámetros del mismo modo que hicimos en el apartado de puesta en marcha. Cuando lo tengamos, aceptamos.

Y ya está, hemos programado la renovación automática de nuestros certificados SSL!

Algunas consideraciones importantes

Limitaciones

Si estamos realizando pruebas o si tenemos muchos dominios/subdominios que deseemos registrar. Debemos tener en cuenta las limitaciones establecidas por Let’s Encrypt:

  • 20 dominios distintos (inclusive subdominios) por semana.
  • Certificados duplicados, 5 por semana.
  • Se pueden crear un máximo de 10 cuentas por dirección IP en 3 horas.

Incompatible con Microsoft Account (LiveID)

Debemos tener en cuenta que sólo funciona con cuentas de empresa o educación (OrgID), no cuentas personales (LiveID). Esto se debe a que las cuentas Microsoft Account son ajenas a Azure, y el proceso de inicio de sesión necesita una redirección a través de live.com para recuperar un token, algo que no es posible hacer de forma no-interactiva. Pero no os preocupéis, tiene fácil SOLUCIÓN y no nos llevará más de 5 minutos:

  1. Si no tenemos un tenant de AzureAD, lo creamos.
  2. Creamos un usuario de Azure AD con rol de usuario.
  3. Nos vamos al grupo de recursos del sitio web que queramos añadir SSL, y en control de acceso (IAM), agregamos el usuario que hemos creado en AzureAD asignándole el rol de Colaborador.
  4. Por último, configuramos los credenciales de la cuenta AzureAD en Azure Automation, como vimos en el paso 3.2.
mm

Sobre Dani Alonso

Daniel Alonso es un apasionado de todas las tecnologías y plataformas, experto en ciberseguridad y soluciones cloud. Cuenta con más de 17 años de experiencia en ciberseguridad y arquitectura IT y desde 2011 forma parte del equipo de MVPs de Microsoft. Actualmente es Cloud Solutions Principal Advisor en ENCAMINA, puesto desde el cual se encarga de seguir impulsando nuestro liderazgo en soluciones Cloud y Office 365.
Esta entrada ha sido publicada en Azure, PowerShell, seguridad y etiquetada como , , . Enlace permanente .
ENCAMINA, piensa en colores