Cómo agregar un certificado SSL a AWS EC2 con la ayuda del nuevo servicio AWS Certificate Manager

91

AWS ha creado un nuevo servicio AWS Certificate Manager . Una cosa que obtuve de la descripción es que si usamos este servicio, ya no tenemos que pagar por el certificado.

Están proporcionando certificados para Elastic Load Balancer (ELB) y CloudFront, pero no encontré EC2 en ninguna parte.

¿Hay alguna forma de utilizar el certificado con EC2?

Bhavik Joshi
fuente
1
podría echar un vistazo a letsencrypt.org para obtener certificados gratuitos y confiables, con contribuyentes como Chrome y Facebook, se ve bastante bien
Tom
1
Ay, yo no sabía nada de esto. Sin embargo, creo que tienen razón al no permitir esto. ¿Preferiría crear alias en otro dominio (a través de Route53, por ejemplo) y no usar el nombre predeterminado de aws dns proporcionado?
Tom
Recientemente me encontré con un video [abril - 2020] en el que crean un certificado SSL \ TLS con AWS Certificate Manager y luego lo colocan en una instancia EC2 detrás de un equilibrador de carga. youtu.be/bWPTq8z1vFY Fue realmente útil.
nktsamba

Respuestas:

109

P: ¿Puedo usar certificados en instancias Amazon EC2 o en mis propios servidores?

No. En este momento, los certificados proporcionados por ACM solo se pueden usar con servicios de AWS específicos.


P: ¿Con qué servicios de AWS puedo usar certificados proporcionados por ACM?

Puede utilizar ACM con los siguientes servicios de AWS:

• Equilibrio de carga elástico

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

https://aws.amazon.com/certificate-manager/faqs/

No puede instalar los certificados creados por Amazon Certificate Manager (ACM) en recursos a los que tiene acceso directo de bajo nivel, como EC2 o servidores fuera de AWS, porque no se le proporciona acceso a las claves privadas. Estos certificados solo se pueden implementar en recursos administrados por la infraestructura de AWS (ELB y CloudFront) porque la infraestructura de AWS contiene las únicas copias de las claves privadas para los certificados que genera y las mantiene bajo estricta seguridad con controles de acceso interno auditables .

Tendría que tener sus máquinas EC2 escuchando detrás de CloudFront o ELB (o ambos, en cascada, también funcionarían) para poder usar estos certificados para contenido proveniente de EC2 ... porque no puede instalar estos certificados directamente en máquinas EC2 .

Michael - sqlbot
fuente
11
La buena noticia es que no hay ningún cargo si emitió un certificado y descubrió aquí que no puede instalarlo.
kraftydevil
1
lol @kraftydevil Supongo que tienes razón. Tenga en cuenta que letsencrypt.org es una fuente legítima, reconocida y sin fines de lucro de certificados SSL gratuitos que puede instalar en cualquier lugar que desee. (Y, debo agregar, no tengo ninguna afiliación con Let's Encrypt.)
Michael - sqlbot
6
@EngineerDollery no, eso solo es cierto para un caso específico. Absolutamente puede usar Let's Encrypt en EC2. Lo que no puede hacer es obtener un certificado Let's Encrypt para un *.amazonaws.comnombre de host EC2 porque, con bastante sensatez, la política Let's Encrypt no lo permite ... pero para un dominio que usted controla que apunta a una IP de instancia EC2, o ELB, o CloudFront, definitivamente puedes usar Let's Encrypt, al igual que en cualquier otro lugar.
Michael - sqlbot
2
Enlace a un ejemplo con un certificado permite cifrar automatizado implementado en EC2: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Efren
Seguí con la configuración de ELB todo, ahora
obtengo
2

No, no puede usar el administrador de certificados aws para implementar certificados en EC2. Los certificados del administrador de certificados solo se pueden implementar en el balanceador de carga elástico y frente a la nube. Para usarlo en ec2, debe colocar elb encima de ec2, de modo que la solicitud del cliente al equilibrador de carga esté protegida por https y de elb al servidor web ec2 estará en http.

prasoon
fuente
1

Si está utilizando AWS ACM Cert solo para fines internos, entonces probablemente podría usar AWS ACM Private CA para emitir los certificados (creo que también puede usarlo para fines de tráfico público / externo si su CA raíz es una CA de confianza pública).

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

Durante el inicio de Application / EC2 / Container, establezca un paso para exportar su certificado / clave privada emitido por ACM Private CA a su destino y comience a referirlo para atender el tráfico.

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

Una cosa buena es que puede controlar quién puede llamar a la función de certificado de exportación mediante el rol de IAM, por lo que no todos pueden descargar la clave privada del certificado.

Una desventaja de esto es que la CA privada es un servicio de AWS costoso ($ 400 / mes). https://aws.amazon.com/certificate-manager/pricing/

Imran
fuente
No puede usar export-certificate con ACM PCA, pero tampoco lo necesita: ya tendrá la clave privada y get-certificate le proporciona el certificado y la cadena.
Willaert gratis
@FreeWillaert Estoy bastante seguro de que no obtendrá la parte de clave privada con get-certificate. consulte esta documentación de CLI . y esto . Verifique ambas salidas de las respuestas cli. Ya probé estos comandos CLI.
Imran
@FreeWillaert sí :). El comando de CLI anterior se puede usar en el script de inicio de Docker o en el script de datos de usuario de EC2 para descargar el certificado de clave privada en tiempo de ejecución y comenzar a utilizarlos para servir el tráfico TLS. Especialmente en ASG. Lo bueno es que puede controlar quién puede llamar al comando CLI anterior utilizando roles de IAM, por lo que no todos tienen acceso a las claves privadas.
Imran
1
@Imran, debe escribir en negrita One downside with this is, private CA is expensive AWS service($400/month).en la parte superior, ya que, por ejemplo, me lo perdería si no leyera esta respuesta por segunda vez
Piekarski D
@PiekarskiD hecho. ¡¡Gracias por la sugerencia!!. si te gusta mi respuesta, puedes votar siempre !!.
Imran
0

Además de los comentarios anteriores, no puede usar AWS Certificate Manager para esto, pero puede agregar un certificado Let's Encrypt a ec2 en un servidor Windows que ejecute IIS y es bastante fácil:

  1. Asocie una ip elástica con su instancia ec2.

  2. Asegúrate de tener un dominio registrado. No puede usar los nombres de tipo ec2----------.us-east-1.compute.amazonaws.com que vienen con su instancia.

  3. A través de la configuración de DNS de su proveedor de dominio, haga que su dominio apunte a su IP elástica.

  4. Conéctese a su instancia ec2 y agregue su nombre de dominio a los enlaces del sitio.

  5. Vaya a https://github.com/PKISharp/win-acme/releases

  6. Busque en los activos y use la última versión (win-acme.v2.0.10.444.zip, por ejemplo). Esta es la única carpeta de activos que necesita.

  7. Descomprima la carpeta, abra el terminal como administrador y cd en la carpeta descomprimida.

  8. Ejecute wacs.exe y siga las instrucciones.

  9. Asegúrese de que el grupo de seguridad asignado a su instancia permita el tráfico (al menos su propia IP) a través del puerto HTTPS que eligió en IIS; este es el puerto 443 por defecto.

Encontré útiles los enlaces a continuación cuando estaba resolviendo esto. Aquí hay un video que usa una versión anterior si necesita más ayuda, pero es la misma idea.

https://www.youtube.com/watch?v=fq5OUOjumuM

Además, este artículo puede ser útil:

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

Sr. J
fuente