Como asignar un certificado de AWS a una instancia EC2

Introducción

Hace unos días, escribimos como crear un certificado digital con "Certificate Manager de AWS", el cual pueden leer aquí. Como lo mencionamos en esa oportunidad, el gran plus que tiene es ser gratuito; algo muy importante considerando que un certificado digital con validez de un año puede tener un valor de 399 USD.

Muy bien, sabemos que los certificados de AWS son gratuitos y muy fácil de crear, pero ¿Como lo instalo en mi servidor virtual?

¿Como instalar certificado SSL en instancia EC2 de AWS

Pues bien, la respuesta es simple: No se puede. Los únicos elementos compatibles, al momento de la edición de este blog, son: Elastic Load Balancers (balanceadores de carga), AWS CloudFront (CDN administrado de AWS) y AWS Elastic Beanstalk (servidor web versión cloud). Como no podemos instalar directamente el certificado digital sobre la instancia EC2, deberemos primero configurar un balanceador de carga que apunte a nuestra instancia EC2, con lo cual conseguiremos el mismo resultado.

Configurar balanceador de carga en AWS

Configurar un balanceador de carga en AWS es muy sencillo. Primero, deberemos ingresar a la consola de AWS e ir a la sección EC2, que es donde están todos los elementos de computo y máquinas virtuales. Una vez allí, se debe presionar el link "Load Balancers", con lo cual se desplegará un listado de los balanceadores de carga configurados en nuestra cuenta.

balanceadores-carga-listado

En la pantalla anterior, aparece un botón de color azul con el texto "Create Load Balancer". Lo presionamos y veremos una pantalla en la cual deberemos ingresar primero el nombre del balanceador, además de especificar algunas opciones, que para este ejemplo, dejaremos tal cual están. Junto con eso, debemos especificar los puertos y protocolos del balanceador y de la instancia. ¿Que quiere decir esto? Que el balanceador puede mapear todo el tráfico a un puerto y protocolo específico. De esta manera, por ejemplo, podríamos redireccionar todo el tráfico https entrante por el balanceador al puerto 80 con protocolo http.

La ventaja de esto, es que no se requiere configurar un certificado digital en la máquina virtual y se podría generar una eficiencia entorno al 10% producto del ahorro de las llamadas cifradas. La desventaja, es que existen ciertos software como moodle, por ejemplo, que están hechos para funcionar con un protocolo de forma correcta y no con ambos al mismo tiempo. En nuestro caso, tenemos un certificado instalado y configurado en nuestro ubuntu con apache, por lo cual podemos redireccionar las llamadas a su puerto y protocolo respectivo; tal cual como se muestra en la siguiente imagen

balanceadores-carga-creacion-fase1

Luego, debemos presionar el botón "Next: Assign Security Groups". Con esto, pasaremos a otra interfaz en la cual deberemos especificar la configuración del firewall de AWS. Como nosotros queremos permitir el acceso a través de los puertos 80 y 443, debemos escoger un grupo de seguridad, que no es más que un conjunto de reglas de acceso, que permitan dicho tráfico. En caso que no tengan un grupo de seguridad creado, pueden crear uno nuevo utilizando la opción "Create new security group". Como nosotros ya contábamos con un grupo de seguridad creado, lo seleccionamos y presionamos el botón que está abajo a la derecha con el texto "Next: Configure Security Settings". La siguiente imagen ilustra el proceso recién descrito

balanceadores-carga-creacion-fase2

Luego de presionar el botón recién descrito, se desplegará una pantalla en la cual deberemos especificar un certificado digital y seleccionar las políticas de seguridad que la gobiernan. Como nosotros ya contamos con un certificado digital, seleccionamos la opción "Choose an existing certificate from AWS Certificate Manager (ACM)", con lo cual podremos seleccionar un certificado del listado que aparece más abajo. Respecto a las políticas de seguridad, las dejaremos por defecto, dado que es lo que recomiendan en la propia AWS. Finalizamos y presionamos el botón "Next: Configure Health Check"

balanceadores-carga-creacion-fase3

Luego, debemos especificar la política de monitoreo para chequear el estado de nuestras instancias. Aquí debemos especificar alguna página a la cual estaremos refrescando cada cierto tiempo, por lo cual debe ser una página ligera que responda rápido y que consuma la menor cantidad de recursos posibles. Configuramos según los valores que consideremos adecuados para nuestro proyecto y presionamos el botón "Next: Add EC2 Instances"

balanceadores-carga-creacion-fase4

Ahora, debemos especificar que instancias de EC2 estarán bajo el balanceador de carga. Lo más probable, es que si es un proyecto pequeño, solo tendremos una instancia de dicho aplicativo. Seleccionamos la o las instancias (en caso de ser más de una, deben tener el mismo contenido, ser todas un clon o un espejo de si mismas) y presionamos "Next: Add Tags"

balanceadores-carga-creacion-fase5

Después, tendremos que configurar los tags, que no es otra cosa que una serie de metadatos en formato de string, que se utilizan para reconocer más rápido el contenido de la instancia a utilizar. Por ejemplo, si el balanceador de carga corresponde al sitio web corporativo, podrían agregar un "key" con el nombre "site", mientras que el "value" sería "corporate site". Una vez que seleccionamos todos los valores, presionamos el botón "Review and Create"

balanceadores-carga-creacion-fase6

La última pantalla del proceso de creación, consiste en revisar los datos antes ingresados. Chequeamos que esté todo correcto y presionamos el botón "Create", con lo cual se creará el balanceador de carga con los parámetros especificados.

Configurar DNS Name

Con lo que hemos creado, tenemos un balanceador asignado a una instancia EC2. No obstante, probablemente la dirección www.tusitio.com esté apuntando a la IP pública de tu instancia EC2. Si se hace de esa manera, la comunicación NO pasará por el balanceador de carga y NO podrás utilizar el certificado digital.

Para evitar esto, debemos primero ir a nuestro proveedor de DNS y crear un registro CNAME, en donde el parámetro "host" corresponde a la dirección de tu sitio web (ej: www.tusitio.com) y el valor de "points to", corresponde al nombre o dns de nuestro balanceador de carga que acabamos de configurar. Para encontrar este valor, simplemente debemos ir al listado de balanceadores de carga y presionar el balanceador de carga que acabamos de configurar; con lo cual se actualizará la sección inferior de la página y se mostrará en el campo "DNS Name" el valor tal cual como debe ser ingresado en nuestro servidor de DNS.

Otro aspecto a evitar, es que nuestro servidor pueda manejar llamadas HTTP y HTTPS por fuera de nuestro balanceador de carga. Para esto, debemos configurar el grupo de seguridad asociado a nuestra instancia EC2 y eliminar el acceso vía HTTP y HTTPS. Y ya está, tenemos nuestro sitio web montado en EC2 con un certificado digital de AWS.

Deseo construir una software sobre AWS

Infodinamica es una empresa enfocada en el desarrollo de software, utilizando herramientas y tecnologías de vanguardia. Si desean una cotización para algún proyecto, pueden contactarnos en el siguiente formulario

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *