HTTPS para site estático do Amazon S3 [fechado]

90

Quero hospedar um site estático apenas HTTPS usando o Amazon S3 e o CloudFront. Aqui está o que fiz até agora:

  1. Configurar um intervalo S3 para hospedagem estática de sites e colocar os arquivos do meu site nele
  2. Criou uma distribuição do CloudFront e apontou para o bucket S3
  3. Adicionado um registro CNAME em nameservers do meu domínio para o wwwsubdomínio apontando para o bucket do CloudFront.

Até agora, tudo bem - posso acessar meu site usando o www.example.comendereço. No entanto, desejo que o site esteja disponível apenas via HTTPS, para o qual comprei um certificado SSL do GoDaddy.

Agora, a questão é:

  1. Existe uma maneira de instalar este certificado SSL de terceiros em meu site hospedado no S3?
  2. Existe uma maneira de ter um redirecionamento automático de http para https com esta configuração?
Jamix
fonte
1
Posso fazer isso sem custo?
Piyush S. Wanare
Você pode obter um certificado SSL da Amazon gratuitamente e ele é renovado automaticamente. aws.amazon.com/certificate-manager Role para baixo até o ícone do cifrão :)
Costa
1
Estou votando para fechar esta questão como fora do tópico porque não lida com programação
Zach Saucier
1
Por que não mover a pergunta para ServerFault?
nu everest,
@nueverest Porque é muito antigo para migrar.
gre_gor

Respostas:

63

Sim, a partir de hoje você pode fazer isso gratuitamente.

Agora você pode usar HTTPS com CNAMEs no CloudFront, pois agora ele oferece suporte a certificados SSL personalizados usando Server Name Indication (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Eu consegui configurar um cert StartSSL gratuito de Classe 1 para meu site estático distribuído do CloudFront no S3 sem muitos problemas (consulte: Erro do CloudFront ao servir por HTTPS usando SNI ).

wikichen
fonte
7
Guia detalhado: bryce.fisher-fleig.org/blog/…
elado
3
Feedback: o guia do Bryce Fisher foi muito bom.
tresf
6
Há uma sutileza aqui. Você pode ter HTTPS para um bucket S3 se não estiver configurado para hospedagem de sites . Consulte a Nota que diz "Os endpoints do site não oferecem suporte a https".
skeller88
6
OK, para superar a "sutileza" e descrever em inglês simples, aqui está minha chance. Um balde S3 com conteúdo de página da web estática (html) pode ser transformado em um site da web com alguns cliques. Este site só pode usar http. Se você deseja https, deve usar o serviço Cloudfront da AWS e configurá-lo para que o SNI obtenha https gratuitamente. (Alguns navegadores muito antigos ou estranhos não suportam SNI.) O html e outros recursos podem ser armazenados no S3 a um custo baixo. Além disso, se você obtiver o nome de domínio da AWS, deverá usar o serviço Elastic Load Balance. As taxas são alguns centavos por show.
Mike_Laird
5
Acho incrível que essa resposta tenha recebido a resposta certa, quando ela simplesmente não responde à pergunta: conforme afirmado por @ skeller88, s3 https não funciona para hospedagem de sites.
abbood
36

Em 21/01/2016, a AWS lançou o AWS Certificate Manager , um serviço gratuito que permite emitir um certificado SSL para ser usado com Elastic Load Balancer e Cloud Front (junto com S3 também).

Você pode aprender mais em: https://aws.amazon.com/certificate-manager/

E você pode verificar como implantar seu site S3 + Cloudfront com SSL grátis da AWS em: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -aw /

barbolo
fonte
1
Acabei de configurar isso para o meu site esta manhã. É um site estático hospedado em s3. Foi super fácil. Eu simplesmente fui até o gerenciador de acm, solicitei um certificado, trabalhei com minhas configurações de e-mail por algumas horas (acabei tornando minhas informações de WHOIS públicas enquanto esperava pelo e-mail de confirmação) e, em seguida, configurei o route53 para apontar para o endpoint do cloudfront . Muito feliz por ter encontrado esse comentário.
paranóico de
1
@paranoid Com isso, posso hospedar meu site s3 apenas como https?
Piyush S. Wanare
1
@ PiyushS.Wanare sim, você pode!
barbolo
Coloque o link HTTPS no registro CNAME em Route53.
Costa
@paranoid não tenho certeza do que você quer dizer com "ponto de extremidade do cloudfront" .. de onde eu obtenho essas informações?
abbood
17

A partir de hoje, a Cloudfront oferece SSL personalizado: http://aws.amazon.com/cloudfront/pricing/

Lembre-se de que eles estão cobrando US $ 600 / mês. Mais detalhes no link acima.

Christian Fazzini
fonte
7
600 / mês ......
Pacerier
11
Você só paga $ 600 se quiser um endereço IP dedicado. Se você estiver satisfeito em usar o SNI (que não é compatível com navegadores mais antigos), não haverá cobrança extra
Martin OConnor
2
Se você deseja oferecer suporte apenas a navegadores modernos (por meio de SNI), agora é muito mais barato: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Andrew Newdigate
Isso é GRÁTIS agora! aws.amazon.com/certificate-manager Role para baixo até o ícone do cifrão. Além disso, acho que eles renovam automaticamente. E a configuração é tão fácil quanto inserir os domínios que você deseja no certificado e clicar no link de validação no e-mail a seguir.
Costa
3

Para mim, tive que fazer o upload de um site simples do React para o S3. Como barbolo descreve, você precisa de um certificado para acessar o site através de SSL. Se o site estático que deseja implantar for simples o suficiente, você pode:

  1. Faça upload para o S3.
  2. Você não selecionar "Static site de hospedagem"
  3. Converta todos os links relativos (para css, js, etc) em links absolutos.

por exemplo, de /css/media.css você deve convertê-lo para https://s3-region-amazonaws.com/bucket-name/css/media.css (para mim, tive que alterar apenas os links em index.html)

  1. Torne apenas o conteúdo do intervalo público.

É isso aí. Você pode acessar o arquivo de índice por meio de https.

Um site simples é um site com um arquivo index.html principal que aponta para algumas páginas css e js.

alexopoulos7
fonte
Impressionante. Obrigado
user1874634
Se o seu aplicativo é direcionado à produção, isso é uma má ideia.
Sébastien
sébastien, por favor, compartilhe conosco mais detalhes porque isso é uma má ideia. Damos acesso público de leitura a objetos que não devem ser armazenados.
alexopoulos7
É uma maneira boa e mais simples, mas lembre-se, para cada arquivo em seu aplicativo, a solicitação viajará pela Internet, o que reduzirá o desempenho de seu aplicativo. Usar o CloudFront é a melhor ideia neste cenário.
Nitesh B.
@ NiteshB.CloudFront é chato quando você precisa atualizar seus objetos S3 com frequência
Dustin Sun
0

Além da resposta de @wikichen.

De: https://aws.amazon.com/cloudfront/custom-ssl-domains/

Por padrão, você pode entregar seu conteúdo aos visualizadores por HTTPS usando seu nome de domínio de distribuição do CloudFront em seus URLs, por exemplo, https://dxxxxx.cloudfront.net/image.jpg .

Se você deseja entregar seu conteúdo por HTTPS usando seu próprio nome de domínio e seu próprio certificado SSL, você pode usar um de nossos recursos de suporte de certificado SSL personalizado.

Jason
fonte