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.crt
e /etc/trusted-key.key
apenas 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 .crt
arquivo emitido pelo ACM (se houver) e então deveria de alguma forma criar um .key
arquivo 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.