Executando nginx com SSL na AWS

Executando nginx com SSL na AWS

Instalei o nginx na AWS usando este script de configuração

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

e emiti um certificado para meu URL (que seja mydom.com) usando o AWS Certificate Manager (ACM) e seu status é exibido comoPublicadoEntão editei a seção relevante nonginx.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>
}

Eu selecionei os arquivos: /etc/ssl/certs/ca-bundle.crte /etc/trusted-key.keyapenas porque eles estavam lá no sistema de arquivos Linux e apenas para tentar ver se o nginx funcionaria com eles, mas não funcionou. Deu:

[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)

Claro que foi apenas uma tentativa. Caso contrário, acho que provavelmente deveria usar o .crtarquivo emitido pelo ACM (se houver) e então deveria de alguma forma criar um .keyarquivo e colocá-lo em algum lugar no sistema de arquivos Linux, como no /etc/nginx/ssl? Eu não tenho certeza. Como devo proceder?

Nota: Tenho alguma experiência em executar aplicações web em meu próprio servidor web, mas usando apenas ohttpnão tenho muita experiência comhttps

Responder1

Os certificados ACM só podem ser usados ​​por serviços gerenciados pela AWS, principalmente balanceadores de carga. Você não pode acessar a chave privada, portanto não pode apresentar um certificado ACM usando o Nginx instalado em sua instância do EC2.

Suas melhores opções são:

  • Encerre https em um ALB, encaminhe o tráfego por http para o servidor web
  • Use um certificado Let's Encrypt. Há uma ampla variedade de softwares para escolher que ajudam a automatizar isso.

informação relacionada