Configuração de HTTPS no Amazon EC2

101

Como habilitamos HTTPS no Amazon EC2? Nosso site está trabalhando em HTTP.

Muhammed Asharaf
fonte
boa pergunta, mas eu defini o grupo de segurança e nenhum charme acontece
Shark Deng

Respostas:

76

Primeiro, você precisa abrir a porta HTTPS (443). Para fazer isso, acesse https://console.aws.amazon.com/ec2/ e clique no Security Groupslink à esquerda, a seguir crie um novo grupo de segurança com HTTPS também disponível. Em seguida, basta atualizar o grupo de segurança de uma instância em execução ou criar uma nova instância usando esse grupo.

Após essas etapas, seu trabalho EC2 está concluído e é tudo um problema de aplicativo.

Daniele Dellafiore
fonte
15
Consegui adicionar uma nova regra para a porta 443 ao grupo de segurança usado pela instância e ela começou a funcionar sem nem mesmo reiniciá-la.
Dmitry Efimenko
9
you can't change a security group of a running instance, even rebooting- Acho que essa limitação foi removida desde que esta resposta foi postada.
Yuriy Nakonechnyy
11
Você não precisa alterar o grupo de segurança, você podeEdit inbound rules
Khoi
8
@ nikhil84 ao adicionar HTTPS no grupo de segurança, você só abriu a porta 443 na máquina que é a etapa 1. Em segundo lugar, você precisa configurar seu servidor nessa máquina para ouvir a porta 443 (em vez da porta HTTP padrão 80) e aceitar o tráfego HTTPS. Qual servidor você usa?
Yuriy Nakonechnyy
4
@ nikhil84 siga as diretrizes listadas aqui: digitalocean.com/community/tutorials/… para configurar https no Apache HTTPD
Yuriy Nakonechnyy
40

Esta resposta é voltada para alguém que compra um domínio em outro site (como GoDaddy) e deseja usar o certificado gratuito da Amazon com o Certificate Manager

Esta resposta usa o Amazon Classic Load Balancer (pago), consulte os preços antes de usá-lo


Etapa 1 - Solicitar um certificado com o Gerenciador de Certificados

Vá para Gerenciador de certificados> Solicitar certificado> Solicitar um certificado público

Em Nome de domínio, você adicionará myprojectdomainname.come seguirá *.myprojectdomainname.comem Avançar

Escolha a validação de e-mail e confirme e solicite

Abra o e-mail que você recebeu (na conta de e-mail que você comprou o domínio) e aprove o pedido

Depois disso, verifique se o status de validação de myprojectdomainname.come se *.myprojectdomainname.comé bem-sucedido, se for bem-sucedido, você pode continuar para a Etapa 2

Etapa 2 - Criar um grupo de segurança para um balanceador de carga

No EC2, vá para Grupos de Segurança> e Criar um Grupo de Segurança e adicione a entrada http e https

Será algo como: insira a descrição da imagem aqui

Etapa 3 - Criar o balanceador de carga

EC2> Balanceador de carga> Criar balanceador de carga> Balanceador de carga clássico (terceira opção)

Crie LB dentro - o vpc do seu projeto On Load Balancer Protocol adiciona Http e Https insira a descrição da imagem aqui

Próximo> Selecione o grupo de segurança de saída

Escolha o grupo de segurança que você criou na etapa anterior

Próximo> Escolha o certificado do ACM

Selecione o certificado da etapa 1

Próximo>

na verificação de saúde, usei o caminho do ping / (uma barra em vez de /index.html)

Etapa 4 - associe sua instância ao grupo de segurança do balanceador de carga

EC2> Instâncias> clique em seu projeto> Ações> Rede> Alterar grupos de segurança

Adicione o grupo de segurança de seu balanceador de carga

Etapa 5

EC2> Balanceador de carga> Clique no balanceador de carga que você criou> copie o nome DNS (registro A), será algo como myproject-2021611191.us-east-1.elb.amazonaws.com

Vá para Route 53> Routes Zones> clique no nome de domínio> Vá para conjuntos de registros (se você não tiver seu domínio aqui, crie uma zona hospedada com Domain Name: myprojectdomainname.come Type: Public Hosted Zone)

Verifique se você tem um tipo de registro A (provavelmente não), crie / edite o conjunto de registros com o nome vazio, digite A, alias Sim e direcione o dns que você copiou

Crie também um novo Conjunto de registros do tipo A , nome *.myprojectdomainname.com, alias Sim e direcione seu domínio (myprojectdomainname.com). Isso possibilitará o acesso ao seu site com www.myprojectdomainname.com e subsite.myprojectdomainname.com. Observação: você precisará configurar seu proxy reverso (Nginx / Apache) para fazer isso.

No NS, copie os 4 valores de servidores de nomes para usar na próxima etapa, será algo como:

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

Vá para EC2> Instâncias> E copie o IP público IPv4 também

Etapa 6

No site de registro de domínio em que você comprou o domínio (no meu caso GoDaddy)

Altere o roteamento para http : <Your IPv4 Public IP Number>e selecione Encaminhar com mascaramento

Altere os servidores de nomes (NS) para os 4 NS que você copiou. Isso pode levar 48 horas para fazer efeito

DigaoParceiro
fonte
Preciso usar um balanceador de carga se quiser https?
Curtis
Eu fiz tudo isso, mas recebo ERR_CONNECTION_TIMED_OUT quando acerto meu domínio em um navegador
Curtis
1
Eu precisava fazer um balanceador de carga com um novo grupo de destino na porta 80 e, em seguida, editar os ouvintes para usar a porta 80. Funciona agora. Obrigado.
Curtis de
1
O balanceador de carga @Curtis não é a única opção para usar https, você também pode configurar "permite criptografar" dentro de seu EC2
DigaoParceiro
@DigaoParceiro o que você fez na etapa 5. copiou o nome DNS?
Prashant
9

As instâncias do Amazon EC2 são apenas máquinas virtuais, portanto, você configuraria o SSL da mesma forma que configuraria em qualquer servidor.

Você não menciona em qual plataforma está, por isso é difícil dar mais informações.

Geoff Appleford
fonte
Olá - estou executando uma instância T2.Micro Amazon Linux EC2. Estou usando o node.js para sustentar o servidor. Estou ouvindo a porta 443 em meu script de servidor e meu grupo de segurança está configurado para a porta 443. O que mais devo fazer para habilitar o HTTPS? Eu preciso de um certificado, certo? Tendo problemas para encontrar informações decentes sobre como fazer isso que NÃO seja baseado no Elastic Beanstalk.
Stephen Tetreault
2
@SMT - dê uma olhada em letsencrypt.org para certificados gratuitos e com renovação automática. Há muitas informações (via google) sobre como configurá-lo usando o node. Não há nada mais específico do AWS / EC2 que você precise fazer.
Geoff Appleford
2
Obrigado pela resposta! Na verdade, comecei a trabalhar outro dia e simplifiquei algumas etapas. Se alguém estiver lendo isso do futuro: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault
5

Uma pergunta antiga mas vale a pena mencionar outra opção nas respostas. Caso o sistema DNS do seu domínio tenha sido definido no Amazon Route 53, você pode usar o serviço Amazon CloudFront na frente do seu EC2 e anexar um certificado Amazon SSL gratuito a ele. Dessa forma, você se beneficiará de ter um CDN para uma entrega de conteúdo mais rápida e também de proteger seu domínio com o protocolo HTTPS.

Ola w
fonte
Existe alguma referência ou blog onde as etapas são mencionadas para conseguir isso?
Saurabh Yadav
neste vídeo atiqur rahman obtém o certificado SSL usando o gerenciador de certificados amazon e, em seguida, ele configura o cloud front com a instância EC2. Após a configuração, http / 2 é habilitado automaticamente.
Sachithra Dilshan
2

Use o Elastic Load Balacing , ele suporta a terminação SSL no Load Balancer, incluindo o descarregamento da descriptografia SSL das instâncias do aplicativo e fornecendo gerenciamento centralizado de certificados SSL.

Peter Hulsen
fonte
15
Você não usa o ELB simplesmente para fornecer SSL; na verdade, essa é uma resposta bastante enganosa. Seu servidor precisa fornecer SSL independentemente, portanto, adicionar um balanceador de carga é apenas um custo adicional se você não precisar dele. É também terminação SSL no software, portanto, o SSL entre o balanceador de carga e o (s) servidor (es) é uma etapa adicional, afetando o desempenho.
Thomas the Tank Engine,
1
Eu concordo com o seu comentário. Isso irá adicionar custos adicionais e afetar o desempenho. Não sabemos seus requisitos exatos com relação à carga em seus servidores, então ainda pode ser um caminho a percorrer. Mas eu não entendo sua observação "Seu servidor precisa fornecer SSL independentemente", por que isso é necessário? O balanceador de carga também inclui o descarregamento de SSL. Obrigado.
Peter Hulsen,
2
Sim, verdade. Você pode usar isso para fornecer o SSL de uma maneira simples. Só estou pensando que as instâncias ainda têm valores DNS públicos em que os usuários podem acessá-los diretamente por qualquer motivo. Se isso acontecer, pode ser que você queira forçar o uso de SSL também.
Thomas the Tank Engine,
Eu sei que este comentário está atrasado, mas pelo meu entendimento se você quiser usar um nome de domínio registrado, então você tem que usar ELB, porque o IP do EC2 é considerado 'não permanente' e portanto não pode usar seu certificado SSL. Por outro lado, se você estiver usando apenas o DNS fornecido pela Amazon, talvez ele não precise do ELB, não verifiquei.
hexículo
1

Você também pode usar o Amazon API Gateway . Coloque seu aplicativo por trás do API Gateway. Por favor, verifique este FAQ

Bhushan
fonte
0

Um dos melhores recursos que encontrei foi usar vamos criptografar, você não precisa de ELB nem cloudfront para que sua instância EC2 tenha HTTPS, basta seguir as seguintes instruções simples: vamos criptografar Faça o login no seu servidor e siga os passos no link.

Também é importante, como mencionado por outros, que você tenha a porta 443 aberta editando seus grupos de segurança

Você pode ver o seu certificado ou qualquer outro site alterando o nome do site neste link

Não se esqueça que só é válido por 90 dias

Mustafa
fonte