Habilitando https en el sitio de S3 utilizando CloudFront

Los sitios estáticos de S3 no son capaces de manejar el protocolo https, por lo que si queremos utilizarlo, debemos poner algo frente al sitio capaz de manejar dicho protocolo. Para ayudarnos en esto, tenemos CloudFront. Esto no es un tutorial de CloudFront, que tiene muchas opciones y su uso va mucho mas allá de lo que se presenta a continuación.

Lo primero que necesitamos para habilitar https en nuestro sitio es un certificado y esta guia asume que ya lo tienes. Puedes utilizar AWS Certificate Manager para crear uno durante el proceso o conseguir uno previamente. El sitio está utilizando un certificado entregado por Let´s Encrypt (letsencrypt.org>)

CloudFront

Hay dos tipos de CDN, Web y RTMP. La primera es la que debemos usar, la otra es para streaming de video. CLick en Web y comenzamos a llenar los datos.

La siguiente imagen muestra algunas de las propiedades mas importantes que debemos completar

CloudFront

En los dos primeros campos debemos especificar el bucket de S3 que contiene los archivos y la ruta de los mismos si es que no están en la raiz. En la isguiente seccion, en Viewer Protocol Policy, debemos indicar que protocolos y métodos queremos aceptar. Las opciones son claras y para nuestros fines de experimentacion, HTTP and HTTPS y GET, HEAD es suficiente.

En la seccion Distribution Settings tenemos otros dos parametros importantes para configurar

CloudFront

En el campo Alternate Domain Names debemos especificar los nombres de dominio a través de los cuales vamos a acceder al sitio. Estos nombres deberán tener sus entradas correspondientes en Route 53. Para este sitio, los dos cnames que estoy usando son www.claudiosomma.net y claudiosomma.net. Ya vimos en una entrada anterios (Un alias para mi dominio ) como responder a los dos nombre con un mismo bucket de S3.

El siguiente campo importante, y la clave de todo esto, es SSL Certificate. Al hacer click sobre el campo, AWS nos muestra una lista de certificados disponibles y si aun no tenemos uno, podemos utilizar el servicio de AWS Certificate Manager para pedirlo.

CloudFront

Tengo pendiente un post sobre como pedir el certificado tanto en AWS Certificate Manager como con Let’s Encrypt. Pero ya me voy a hacer de un tiempo para escribirlo…

El resto de los parametros podemos dejarlos en sus valores por defecto. Para finalizar hacemos click en Create Distribution y a esperar. Puede tomar 15 minutos en crearse, tiempo que podemos aprovechar para actualizar las entradas en Route 53.

Ya habiamos visto como crear una hosted zone y un dominio en la entrada Route 53 y tu propio dominio y como crearle un alias en la entrada Un alias para mi dominio . Ahora tenemos que modificar esos dos registros para apuntar a nuestra CloudFront Distribution Netwrok.

CloudFront

El proceso es muy sencillo, para cada una de las entradas debemos cambiar el campo alias. Al borrar su valor actual (el bucket de S3) nos aparece la lista de posibles recursos que pueden ser respuesta al pedido y debemos seleccionar la CDN que recién creamos.

Debemos tener en cuenta que mientras la CDN no se termine de crear podemos recibir algunos resultados erráticos. Tambien los caches locales que tengamos en nuestro cliente de DNS o el cache del browser pueden jugar una mala pasada, asi que a no desesperarse. Borrar cookies, cache del navegador, probar desde otro dispositivo o utilizar el modo incógnito de Chrome.