AWS le brinda un certificado SSL GRATIS si usa su balanceador de carga (sí, tiene que pagar por el balanceador de carga, pero es bastante barato y, al final, es algo que su sitio debería tener de todos modos), pero encontré que la configuración es confusa. Configurar un balanceador de carga, conectarlo a la instancia EC2, configurar el DNS e ingresar toda la información correcta no es un proceso trivial. Esta guía le brinda todo lo que necesita para comenzar a usar un certificado SSL.
Qué está cubierto
Supongo que tiene alguna aplicación que está lista para implementar. No importa si usa NodeJS, Python o Java en el backend. Todo lo que importa es que se ejecute en algún puerto que pueda controlar. Para este artículo asumiré el puerto 8080. Este no es un puerto especial. Funcionaría igual con el puerto 1234, 3000 o 5000. Acabo de configurar mis cosas con 8080 para que sea más fácil de seguir.
Esta parte es fácil. Inicie sesión en la consola de Amazon y, en Servicios, haga clic en EC2. Haga clic en el botón de instancia de lanzamiento. Se parece a esto:
Lanzar nueva instancia EC2
Luego, debe seleccionar qué AMI (Imagen de máquina de Amazon) desea. Este es el sistema operativo que utilizará la instancia. Por lo general, solo querrá una instancia de Linux, pero es posible que desee algo diferente según sus necesidades. Voy a elegir el primero:
Haga clic en seleccionar y luego seleccione su tipo de instancia. Esto es para configurar cuánta RAM tendrá su servidor, cuánta potencia de procesamiento, el tamaño y el tipo. Yo personalmente solo voy con los valores predeterminados. Mantiene las cosas fáciles.
Cuando llegue al paso 6, querrá crear un nuevo grupo de seguridad. La configuración debería verse así:
Cuando presione iniciar, se le dará la opción de crear una nueva clave. Esto es lo que le permitirá SSH en la instancia. Cree uno nuevo (o use uno antiguo si aún tiene acceso al archivo .pem
y desea usarlo) y asígnele un nombre. Descárguelo y guárdelo en algún lugar de su computadora que sea de fácil acceso (normalmente lo guardo en ~/
).
En su terminal, .pem
cd
siga las instrucciones que aparecen cuando presiona el botón de conexión (debe tener la instancia seleccionada al hacer clic en él). Una vez que esté conectado a SSH en la instancia, puede clonar su código desde GitHub o donde sea que esté almacenado, instalar cualquier dependencia e iniciar su servidor. Luego sal. Ese es todo el trabajo de terminal que haremos :).
A continuación, necesitará una dirección IP para su instancia para que sea de acceso público. AWS hace esto con direcciones IP elásticas. Está listado en el panel lateral izquierdo. Encuéntralo y abre la página. Haga clic en Allocate new address
y luego, cuando la instancia EC2 que acaba de crear aparezca en la lista, haga clic en CTRL
y seleccione Associate Address
. Luego, seleccione la instancia que acaba de crear y haga clic en Associate
.
Visitar esta dirección IP y luego :PORT_NUM
debería llevarlo a su sitio. Entonces, si su IP elástica era 34.200.70.235
y su aplicación se ejecutaba en el puerto 8080, visitar 34.200.70.235:8080
haría una solicitud de obtención a /
.
Anexo: ¡Gracias a Michael Flaxman por detectar un error! En el grupo de seguridad que se muestra en la imagen de arriba, el puerto
8080
no está incluido, lo que significa que se bloquearía la visita a34.200.70.235:8080
. Para permitir el acceso, edite el grupo de seguridad y simplemente agregue el puerto8080
con el tipohttp
con las mismas opciones desource
que los puertos 80 y 443.
¡¡Felicitaciones!! ¡Acaba de implementar su sitio web en AWS! Intentemos mejorarlo un poco agregando SSL y asociándolo con un nombre de dominio.
Haremos esto usando ACM, el administrador de certificados de AWS. Haga clic en servicios, busque ACM
y haga clic en Administrador de certificados.
Haga clic Request a Certificate
. Quiere un Certificado Público. Haga clic en Solicitar un certificado y agregue todos sus nombres de dominio al cuadro. Esto solo debe incluir el dominio principal (también conocido como el dominio desnudo), también conocido como mypage.com
y no cosas como mypage.com/blah
. Si tiene otras versiones como [www.mypage.com](http://www.mypage.com)
o blog.mypage.com
agréguelas también y haga clic en siguiente.
Agrega tus dominios
Ahora, AWS necesita verificar que usted es, de hecho, el propietario de ese dominio. Seleccione Validación de DNS si tiene acceso a la configuración de DNS (esto sería a través de Route53, Namecheap, GoDaddy o cualquier otro proveedor de nombres de dominio) o Validación de correo electrónico si no lo tiene. La validación de DNS es mejor y más rápida. Si está utilizando Route 53 (que recomiendo), la configuración restante es muy fácil, ya que AWS puede agregar los registros necesarios para usted a la configuración de DNS. De lo contrario, tendrá que copiarlos y pegarlos. Guarde sus cambios y luego debería ver algo como esto:
Si está utilizando Route 53, habrá un botón adicional disponible para agregar los registros CNAME a su DNS (que se muestra a continuación). Haga clic en él para cada versión del dominio (la versión www y no www y cualquier otro subdominio que haya agregado en el paso anterior). De lo contrario, copie el nombre y el valor y agréguelo como un registro CNAME a su configuración de DNS. Cada versión requiere su propio registro, así que asegúrese de agregarlos todos a su configuración de DNS.
Una vez que AWS verifique todo, el estado de validación se actualizará para decir Éxito en verde. Esto puede llevar algo de tiempo (de 0 a 30 minutos o más, pero normalmente alrededor de 5), así que no se preocupe si no sucede de inmediato.
Ahora necesitamos configurar el balanceador de carga. Esto también se encuentra en el panel lateral izquierdo en EC2. Un equilibrador de carga facilita la distribución uniforme del tráfico a su sitio a los múltiples servidores que lo ejecutan. Realmente no vamos a hacer uso de este aspecto (ya que solo tenemos una instancia ejecutándose), pero esa es su función principal. Abra su página y haga clic en Crear balanceador de carga.
Lo que te lleva a esta página:
Crear opciones de equilibrador de carga
Usaremos la primera opción, HTTP y HTTPS. Haz clic y dale un nombre. En Load Balancer Protocol
, querremos agregar HTTP
y HTTPS
como opciones. La opción HTTP
debe configurarse para usar el puerto 80 y la opción HTTPS
el puerto 443. Elija algunas zonas de disponibilidad (se requieren 2 como mínimo). La configuración debería verse así:
Observe cómo para el puerto especifica el puerto del equilibrador de carga. Este es el puerto del balanceador de carga, NO de su aplicación (que es 8080). Esto se debe a que Load Balancer se colocará frente a su servidor y escuchará en los puertos 80 y 443 (lo que acabamos de configurar). Cuando entra una solicitud en cualquiera de estos puertos, el balanceador de carga tomará alguna acción para reenviar la solicitud a su aplicación, que estará escuchando en el puerto 8080 (lo configuraremos en el siguiente paso).
Una vez hecho esto, haga clic en siguiente.
Aquí es donde conecta el certificado SSL al Load Balancer. Seleccione Choose a Certificate from ACM
y el certificado que acaba de crear en el menú desplegable. La política de seguridad predeterminada está lista.
Mira, no está mal y ya casi terminamos.
Vaya ahora a Grupos objetivo, también en el lado izquierdo de la configuración de EC2 y justo debajo de Load Balancers, y cree un nuevo grupo objetivo.
Asígnele un nombre y use HTTP como protocolo con un valor de puerto de 8080 (el mismo que el puerto en el que escucha su servidor real).
Selecciónelo, haga clic en Objetivos en el panel inferior y luego edítelo. Vas a seleccionar tu instancia EC2 en la parte inferior y luego hacer clic Add to registered
y asegurarte de que el puerto sea 8080 y luego Save
. Ahora debería aparecer en la parte superior como un objetivo registrado.
Vuelva a la configuración del balanceador de carga y seleccione su balanceador de carga. Elija oyentes y haga clic en Add listener
con un valor de puerto de 80 y reenvíelo al grupo objetivo que acabamos de crear (ignore el rojo a continuación).
Vuelva a hacer lo mismo, pero en lugar de HTTP, haga HTTPS y use el puerto 443 nuevamente con el mismo grupo objetivo que acabamos de crear. Sin embargo, para este estableceremos que la información de SSL sea de ACM y luego seleccionaremos el Certificado que creamos anteriormente. Presiona guardar y ahora debería verse así en la sección de oyentes.
Asegúrese de configurar también el grupo de seguridad para el balanceador de carga para permitir que el tráfico ingrese en el puerto 80. Para crear un nuevo grupo de seguridad, busque la pestaña en el panel izquierdo de la página de EC2. Cree un nuevo grupo de seguridad que permita el tráfico de todas las fuentes en el puerto 80 como se muestra a continuación. Si obtiene un error sobre CIDR
, es porque debe configurar la columna de source
.
El último y último paso es actualizar los registros DNS de su sitio para que ahora apunten al balanceador de carga.
Vaya a Route 53 en la consola y abra la configuración de su Dominio.
Si aún no los tiene, deberá agregar dos registros A. Si ya los tiene, deberá actualizarlos.
Para el tipo, seleccione un registro y luego, justo debajo, verá una opción de sí o no para Alias. Elija Sí.
Luego haga clic en el libro de texto a la derecha de Alias Target y seleccione el balanceador de carga que acaba de crear de la lista.
¡¡¡Y ESO ES!!!
Cuando llega una solicitud a su dominio (ya sea http o https), Route 53 la dirigirá al balanceador de carga, que usará el grupo objetivo para enviarla a la instancia EC2.
Si tiene algún problema, busque en Google el servicio con el que estaba trabajando (ACM, EC2, Route53, etc.) y luego el problema o deje un comentario a continuación. Espero que esto te haya ayudado a que tu sitio funcione con SSL
Como dijo Jeb Bush, aplauda: :)