Redirigir un dominio usando HTTPS con S3 y CloudFront

La semana pasada retiramos uno de nuestros productos y lo integramos en otro diferente. Debido a eso, queríamos redirigir el dominio anterior al nuevo manteniendo todas las rutas en el mismo.

Ya he usado S3 para redirigir dominios con anterioridad. Me parece muy fácil de usar y se puede configurar una redirección en un par de minutos. Sin embargo, hay una desventaja, sólo funciona desde tráfico HTTP, no desde HTTPS. En nuestro caso, nuestra antigua web utiliza HTTPS así que si alguien intentase acceder la redirección no funcionaría y al final superaremos el tiempo de espera y saltará un error.

Ahí es donde entra CloudFront. Utilizándolo en conjunto con nuestro bucket de S3 podemos redirigir tráfico HTTPS. Esta es una guía paso a paso de lo que hice.

Crear y configurar un bucket de S3

  • Crea el bucket de la misma forma que harías normalmente. Si sólo fueses a usar la redirección con S3 tendrías que ponerle de nombre el dominio que quieres redireccionar. Como vamos a usar CloudFront no es necesario.
  • Vete a la sección de Propiedades de tu nuevo bucket.
    • Activa el Alojamiento de sitios web estáticos (Static Website Hosting)
    • Escoge Redirigir las solicitudes de un objeto (Redirect requests for an object)
    • Añade el nombre de alojamiento al que quieres redirigir tu dominio y selecciona HTTPS como protocolo.
    • Guarda tus cambios.

Acuérdate de anotar el punto de enlace de sitio web del bucket/bucket website endpoint. Lo necesitarás más tarde para configurar CloudFront.

Obtener un certificado SSL

Si no lo tienes ya, necesitas conseguir un certificado SSL para el dominio que quieres redirigir. Lo necesitarás para usarlo con CloudFront.

Es importante recordar que debes generar al certificado en la región AWS correcta. Para usar un certificado con CloudFront el certificado debe estar en la región de N. Virginia. Así que si lo tienes otra, deberás pedirlo en esa también.

  • Vete al Certificate Manager
  • Solicitar un certificado (Request Certificate)
  • Solicitar un certificado público (Request public certificate)
  • Agrega los nombres de dominio que quieres usar
  • Ahora debes escoger el método de validación que quieres usar.
    • La validación DNS te pedirá que añadas unos registros a tu configuración DNS. Si usas Route 53 AWS lo puede hacer por tí.
    • La validación por email enviará un correo a la dirección que aparece en el whois. Después tendrás que aceptarla.
  • Una vez la validación se complete verás que el estado de tu certificado es Emitido/Issued.

Configurando CloudFront

Vamos a configurar ahora una distribución de CloudFront que apunte a nuestro bucket en S3.

Yo uso AWS en inglés e intento mirar cómo traducen los términos al español. En este caso, parece que no han traducido CloudFront todavía así que os lo dejo con los términos en inglés.

Para configurar las Origin Settings sólo necesitamos rellenar el Origin Domain Name con el buckent endpoint que copiamos anteriormente.

No necesitas cambiar nada en Default Cache Behavior Settings. Si quieres, por ejemplo, puedes cambiar la Viewer Protocol Policy a Redirect HTTP to HTTPS.

Ahora, en Distribution Settings, necesitas configurar los nombres de dominio que quieres utilizar con CloudFront. En este caso son los que quieres redirigir. Además tienes que seleccionar el certificado SSL.

Ahora haz click en Create Distribution en la parte inferior derecha de la página y la distribución empezará a crearse. Una vez esté todo listo verás algo parecido a esto.

Aquí puedes comprobar si la redirección funciona antes de configurar tu DNS para que apunte a CloudFront. Simplemente usa el dominio *.cloudfront.net que puedes ver. Si lo intentas abrir en tu navegador debería redirigirte al nuevo sitio. Si no lo hace, hay algo mal. Comprueba lo que has hecho para ver si hay algo mal en la configuración de CloudFront o de S3.

Configura tu DNS

En este caso yo usaré Route 53.

Si no usas Route 53 deberás crear registros CNAME para las versiones de tu dominio que quieras redirigir (por ejemplo example.com y www.example.com) de forma que apunten a tu dominio *.cloudfront.net. Estos registros CNAME deben ser los mismos que configuraste en CloudFront anteriormente.

Vete a tu Zona Alojada/Hosted Zone.

Modifica o crea los registros DNS para las versiones de tu dominio que queras redirigir. Deben de ser los mismos que configuraste en CloudFront.

  • Tipo de registro: A
  • Configúralo como un Alias
  • Dirige el tráfico a una distribución de CloudFront. La distribución debería aparecer automáticamente cuando hagas click en la casilla.
  • Política direaccionamiento: Secillo

¡Y ya está! Una vez los cambios en el DNS se propaguen tu dominio se redirigirá al nuevo. En mi caso tardó unos cinco minutos, pero puede que tengas que esperar algo más.

Espero que este post te haya sido de ayuda. Nos vemos en el siguiente.

Deja una respuesta

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