Configuración de HTTPS en Amazon EC2

101

¿Cómo habilitamos HTTPS en Amazon EC2? Nuestro sitio funciona con HTTP.

Muhammed Asharaf
fuente
buena pregunta, pero configuré el grupo de seguridad y no ocurre ningún encanto
Shark Deng

Respuestas:

76

Primero, debe abrir el puerto HTTPS (443). Para hacer eso, vaya a https://console.aws.amazon.com/ec2/ y haga clic en el Security Groupsenlace de la izquierda, luego cree un nuevo grupo de seguridad con HTTPS también disponible. Luego, simplemente actualice el grupo de seguridad de una instancia en ejecución o cree una nueva instancia con ese grupo.

Después de estos pasos, su trabajo de EC2 está terminado y todo es un problema de aplicación.

Daniele Dellafiore
fuente
15
Pude agregar una nueva regla para el puerto 443 al grupo de seguridad utilizado por la instancia y simplemente comenzó a funcionar sin siquiera reiniciarlo.
Dmitry Efimenko
9
you can't change a security group of a running instance, even rebooting- Creo que esta limitación se eliminó desde que se publicó esta respuesta.
Yuriy Nakonechnyy
11
No es necesario cambiar el grupo de seguridad, puede hacerloEdit inbound rules
Khoi
8
@ nikhil84 al agregar HTTPS en el grupo de seguridad, solo abrió el puerto 443 en la máquina, que es el paso 1. En segundo lugar, debe configurar su servidor en esa máquina para escuchar el puerto 443 (en lugar del puerto HTTP 80 predeterminado) y aceptar el tráfico HTTPS. ¿Qué servidor utilizas?
Yuriy Nakonechnyy
4
@ nikhil84 siga las pautas que se enumeran aquí: digitalocean.com/community/tutorials/… para configurar https en Apache HTTPD
Yuriy Nakonechnyy
40

Esta respuesta está enfocada a alguien que compra un dominio en otro sitio (como GoDaddy) y quiere usar el certificado gratuito de Amazon con el Administrador de certificados.

Esta respuesta usa Amazon Classic Load Balancer (pagado) consulte el precio antes de usarlo


Paso 1 : solicite un certificado con el Administrador de certificados

Vaya a Administrador de certificados> Solicitar certificado> Solicitar un certificado público

En nombre de dominio que va a agregar myprojectdomainname.comy *.myprojectdomainname.come ir en Siguiente

Elija Validación de correo electrónico y Confirmar y solicitar

Abra el correo electrónico que ha recibido (en la cuenta de correo electrónico que compró el dominio) y apruebe la solicitud

Después de esto, verifique si el estado de validación de myprojectdomainname.comy *.myprojectdomainname.comes exitoso, si es exitoso, puede continuar con el Paso 2

Paso 2 : crear un grupo de seguridad para un equilibrador de carga

En EC2, vaya a Grupos de seguridad> y cree un grupo de seguridad y agregue http y https

Será algo como: ingrese la descripción de la imagen aquí

Paso 3 : crear el equilibrador de carga

EC2> Load Balancer> Crear Load Balancer> Classic Load Balancer (tercera opción)

Cree LB en el interior: el vpc de su proyecto En el protocolo Load Balancer agregue Http y Https ingrese la descripción de la imagen aquí

Siguiente> Seleccionar grupo de seguridad saliente

Elija el grupo de seguridad que ha creado en el paso anterior

Siguiente> Elija certificado de ACM

Seleccione el certificado del paso 1

Siguiente>

en la verificación de estado, he usado la ruta de ping / (una barra en lugar de /index.html)

Paso 4 : asocia tu instancia con el grupo de seguridad del equilibrador de carga

EC2> Instancias> haga clic en su proyecto> Acciones> Redes> Cambiar grupos de seguridad

Agregue el grupo de seguridad de su balanceador de carga

Paso 5

EC2> Load Balancer> Haga clic en el balanceador de carga que ha creado> copie el nombre DNS (registro A), será algo así como myproject-2021611191.us-east-1.elb.amazonaws.com

Vaya a Ruta 53> Zonas de rutas> haga clic en el nombre de dominio> Ir a Conjuntos de registros (si no tiene su dominio aquí, cree una zona alojada con Domain Name: myprojectdomainname.comy Type: Public Hosted Zone)

Verifique si tiene un registro tipo A (probablemente no), cree / edite el conjunto de registros con el nombre vacío, escriba A, alias Sí y Apunte a los dns que ha copiado

Cree también un nuevo conjunto de registros de tipo A , nombre *.myprojectdomainname.com, alias Sí y Apunte a su dominio (myprojectdomainname.com). Esto hará posible acceder a su sitio con www.myprojectdomainname.com y subsite.myprojectdomainname.com. Nota: Deberá configurar su proxy inverso (Nginx / Apache) para hacerlo.

En NS, copie los 4 valores de los servidores de nombres para usarlos en el siguiente paso, será algo como:

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

Vaya a EC2> Instancias> Y copie también la IP pública IPv4

Paso 6

En el sitio de registro de dominios donde compraste el dominio (en mi caso, GoDaddy)

Cambie la ruta http : <Your IPv4 Public IP Number>ay seleccione Reenviar con enmascaramiento

Cambie los servidores de nombres (NS) por los 4 NS que ha copiado; esto puede tardar 48 horas en surtir efecto

DigaoParceiro
fuente
¿Tengo que usar un equilibrador de carga si quiero https?
Curtis
Hice todo esto, pero obtengo ERR_CONNECTION_TIMED_OUT cuando accedo a mi dominio en un navegador
Curtis
1
Necesitaba hacer un balanceador de carga con un nuevo grupo objetivo en el puerto 80, luego editar los oyentes para usar el puerto 80. Funciona ahora. Gracias.
Curtis
1
@Curtis Load balancer no es la única opción para usar https, también puede configurar "permite cifrar" dentro de su EC2
DigaoParceiro
@DigaoParceiro ¿Qué hiciste con el paso 5. Copiaste el nombre DNS?
Prashant
9

Las instancias de Amazon EC2 son solo máquinas virtuales, por lo que debería configurar SSL de la misma manera que lo haría en cualquier servidor.

No mencionas en qué plataforma estás, por lo que es difícil dar más información.

Geoff Appleford
fuente
Hola: estoy ejecutando una instancia EC2 de T2.Micro Amazon Linux. Estoy usando node.js para apuntalar el servidor. Estoy escuchando el puerto 443 en mi script de servidor y mi grupo de seguridad está configurado para el puerto 443. ¿Qué más tengo que hacer para habilitar HTTPS? Necesito un certificado, ¿verdad? Tener problemas para encontrar información decente sobre cómo hacer esto que NO esté basada en Elastic Beanstalk.
Stephen Tetreault
2
@SMT: eche un vistazo a letsencrypt.org para obtener certificados gratuitos y de renovación automática. Hay mucha información (a través de Google) sobre cómo configurarlo usando node. No hay nada más específico de AWS / EC2 que deba hacer.
Geoff Appleford
2
¡Gracias por la respuesta! De hecho, lo hice funcionar el otro día y he simplificado algunos pasos. Si alguien está leyendo esto del futuro: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault
5

Una pregunta antigua pero que vale la pena mencionar otra opción en las respuestas. En caso de que el sistema DNS de su dominio se haya definido en Amazon Route 53, puede utilizar el servicio Amazon CloudFront delante de su EC2 y adjuntarle un certificado SSL de Amazon gratuito. De esta manera, se beneficiará de tener un CDN para una entrega de contenido más rápida y también de proteger su dominio con el protocolo HTTPS.

Hola w
fuente
¿Existe alguna referencia o blog donde se mencionen los pasos para lograrlo?
Saurabh Yadav
en este video, atiqur rahman obtiene el certificado ssl usando el administrador de certificados de amazon y luego configura el frente de la nube con la instancia EC2. Después de la configuración, http / 2 se habilita automáticamente.
Sachithra Dilshan
2

Use Elastic Load Balacing , admite la terminación SSL en Load Balancer, incluida la descarga del descifrado SSL de las instancias de la aplicación y la administración centralizada de certificados SSL.

Peter Hulsen
fuente
15
No usa ELB simplemente para proporcionar SSL, en realidad es una respuesta bastante engañosa. Su servidor necesita proporcionar SSL independientemente, por lo que agregar un equilibrador de carga es solo un costo adicional si no lo necesita. También es la terminación SSL en el software, por lo que el SSL entre el equilibrador de carga y el servidor (es) es un paso adicional que afecta el rendimiento.
Thomas the Tank Engine
1
Estoy de acuerdo con tu comentario. Agregará un costo adicional y afectará el rendimiento. No conocemos sus requisitos exactos con respecto a la carga en sus servidores, por lo que aún podría ser un camino por recorrer. Pero no entiendo su comentario "Su servidor necesita proporcionar SSL independientemente", ¿por qué es necesario? El equilibrador de carga también incluye la descarga de SSL. Gracias.
Peter Hulsen
2
Si verdad. Puede usar eso para proporcionar el SSL de una manera simple. Solo estoy pensando que las instancias todavía tienen valores de DNS públicos donde los usuarios pueden acceder a ellos directamente por cualquier motivo. Si eso sucediera, es posible que desee forzar que también use SSL.
Thomas the Tank Engine
Sé que este comentario llega tarde, pero según tengo entendido, si desea utilizar un nombre de dominio registrado, debe utilizar ELB, porque la IP de EC2 se considera "no permanente" y, por lo tanto, no puede utilizar su certificado SSL. Por otro lado, si solo está utilizando el DNS proporcionado por Amazon, entonces tal vez no necesite ELB, no lo he verificado.
hexículo
0

Uno de los mejores recursos que encontré fue usar vamos a cifrar, no necesita ELB ni cloudfront para que su instancia EC2 tenga HTTPS, solo siga las siguientes instrucciones simples: cifremos el inicio de sesión en su servidor y siga los pasos en el enlace.

También es importante, como lo mencionaron otros, que tenga el puerto 443 abierto editando sus grupos de seguridad

Puede ver su certificado o el de cualquier otro sitio web cambiando el nombre del sitio en este enlace

No olvide que solo es válido durante 90 días.

Mustafa
fuente