Ejecutando nginx con SSL en AWS

Ejecutando nginx con SSL en AWS

Instalé nginx en AWS usando este script de configuración

--prefix=/usr/local/nginx-1.16.1 --with-http_ssl_module --with-openssl=~/Downloads/openssl-1.1.1i --without-http_rewrite_module

y he emitido un certificado para mi URL (que sea mydom.com) utilizando AWS Certificate Manager (ACM) y su estado se muestra comoEmitidoLuego edité la sección correspondiente en elnginx.conf

server {
listen 443 ssl;
server_name localhost mydom.com;
ssl_certificate  /etc/ssl/certs/ca-bundle.crt;
ssl_certificate_key  /etc/trusted-key.key;
<truncated>
}

Seleccioné los archivos: /etc/ssl/certs/ca-bundle.crty /etc/trusted-key.keysolo porque estaban allí en el sistema de archivos de Linux y solo por intentar ver si nginx se ejecutaría con ellos, pero no funcionó. Lo dio:

[emerg] cannot load certificate key "/etc/trusted-key.key": PEM_read_bio_PrivateKey() failes (SSL: error:0909006C:PEM routines:get_name: no start line:Expecting: ANY PRIVATE KEY)

Por supuesto que eso fue sólo un intento. De lo contrario, creo que probablemente debería usar el .crtarchivo emitido por ACM (si hay alguno) y luego debería crear de alguna manera un .keyarchivo y colocarlo en algún lugar del sistema de archivos de Linux, como debajo de /etc/nginx/ssl? No estoy seguro. ¿Cómo debo proceder?

Nota: Tengo cierta experiencia ejecutando aplicaciones web en mi propio servidor web pero usando solo elhttpno tengo mucha experiencia conhttps

Respuesta1

Los certificados ACM solo pueden ser utilizados por los servicios administrados de AWS, principalmente los balanceadores de carga. No puede acceder a la clave privada, por lo que no puede presentar un certificado ACM utilizando Nginx instalado en su instancia EC2.

Tus mejores opciones son:

  • Termine https en un ALB, reenvíe el tráfico a través de http al servidor web
  • Utilice un certificado Let's Encrypt. Existe una amplia gama de software para elegir que ayuda a automatizar esto.

información relacionada