HTTPS para el sitio web estático de Amazon S3 [cerrado]

90

Quiero alojar un sitio web estático solo HTTPS con Amazon S3 y CloudFront. Esto es lo que he hecho hasta ahora:

  1. Configurar un depósito de S3 para el alojamiento de sitios web estáticos y colocar los archivos de mi sitio web en él
  2. Creó una distribución de CloudFront y la apuntó al depósito S3
  3. Se agregó un registro CNAME en los servidores de nombres de mi dominio para el wwwsubdominio que apunta al depósito de CloudFront.

Hasta ahora, todo bien: puedo acceder a mi sitio web utilizando la www.example.comdirección. Sin embargo, quiero que el sitio esté disponible solo a través de HTTPS, para lo cual compré un certificado SSL de GoDaddy.

Ahora, la pregunta es:

  1. ¿Existe alguna forma de instalar este certificado SSL de terceros en mi sitio web alojado en S3?
  2. ¿Hay alguna manera de tener una redirección automática de http a https con esta configuración?
Jamix
fuente
1
¿Puedo hacerlo de forma gratuita?
Piyush S. Wanare
Puede obtener un certificado SSL de Amazon de forma gratuita y se renueva automáticamente. aws.amazon.com/certificate-manager Desplácese hacia abajo hasta el icono del signo de dólar :)
Costa
1
Estoy votando para cerrar esta pregunta como fuera de tema porque no se ocupa de la programación
Zach Saucier
1
¿Por qué no mover la pregunta a ServerFault?
Nu Everest
@nueverest Porque es demasiado viejo para migrar.
gre_gor

Respuestas:

63

Sí, a partir de hoy puedes hacerlo sin cargo.

Ahora puede utilizar HTTPS con CNAME en CloudFront, ya que ahora admite certificados SSL personalizados mediante la indicación de nombre del servidor (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Logré configurar un certificado StartSSL de clase 1 gratuito para mi sitio estático distribuido de CloudFront en S3 sin demasiados problemas (consulte: Error de CloudFront al servir a través de HTTPS usando SNI ).

wikichen
fuente
7
Guía detallada: bryce.fisher-fleig.org/blog/…
elado
3
Comentarios: la guía de Bryce Fisher fue muy buena.
tresf
6
Hay una sutileza aquí. Puede tener HTTPS para un bucket de S3 si no está configurado para alojamiento de sitios web . Consulte la nota que dice "Los puntos finales del sitio web no admiten https".
skeller88
6
De acuerdo, para superar la "sutileza" y describirlo en un lenguaje sencillo, esta es mi oportunidad. Un bucket de S3 con contenido de página web estático (html) se puede convertir en un sitio web con unos pocos clics. Este sitio web solo puede usar http. Si desea https, debe utilizar el servicio Cloudfront de AWS y configurarlo para que SNI obtenga https de forma gratuita. (Algunos navegadores muy antiguos o extraños no admiten SNI). El html y otros recursos se pueden almacenar en S3 a bajo costo. Además, si obtiene el nombre de dominio de AWS, debe usar su servicio Elastic Load Balance. Las tarifas son unos pocos centavos por concierto.
Mike_Laird
5
Me parece sorprendente que esta respuesta haya obtenido la respuesta correcta, cuando simplemente no responde a la pregunta: como lo indica @ skeller88, s3 https no funciona para el alojamiento de sitios web.
abbood
36

El 21 de enero de 2016, AWS lanzó AWS Certificate Manager , que es un servicio gratuito que le permite emitir un certificado SSL para usar con Elastic Load Balancer y Cloud Front (junto con S3 también).

Puede obtener más información en: https://aws.amazon.com/certificate-manager/

Y puede comprobar cómo implementar su sitio web S3 + Cloudfront con SSL gratuito de AWS en: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -aws /

barbolo
fuente
1
Acabo de configurar esto para mi sitio esta mañana. Es un sitio estático alojado en s3. Fue muy fácil. Simplemente fui al administrador de acm, solicité un certificado, me puse a trabajar con la configuración de mi correo electrónico durante unas horas (terminé haciendo pública mi información de WHOIS mientras esperaba el correo electrónico de confirmación) y luego configuré la ruta 53 para que apunte al extremo de la nube. . Muy feliz de haber encontrado este comentario.
paranoico
1
@paranoid Con esto, ¿puedo alojar mi sitio web s3 como solo https?
Piyush S. Wanare
1
@ PiyushS.Wanare sí, ¡puedes!
barbolo
Coloque el enlace HTTPS en el registro CNAME en Route53.
Costa
@paranoid no está seguro de lo que quiere decir con "punto final de la nube" ... ¿de dónde obtengo esa información?
abbood
17

A partir de hoy, Cloudfront ofrece SSL personalizado: http://aws.amazon.com/cloudfront/pricing/

Tenga en cuenta que están cobrando $ 600 al mes. Más detalles en el enlace de arriba.

Christian Fazzini
fuente
7
600 / mes ......
Pacerier
11
Solo paga $ 600 si desea una dirección IP dedicada. Si está contento de usar SNI (que no es compatible con navegadores más antiguos), no se aplican cargos adicionales
Martin OConnor
2
Si está dispuesto a admitir navegadores modernos únicamente (a través de SNI), ahora es mucho más económico: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Andrew Newdigate
¡Esto es GRATIS ahora! aws.amazon.com/certificate-manager Desplácese hacia abajo hasta el icono del signo de dólar. Además, creo que se renuevan automáticamente. Y la configuración es tan fácil como ingresar los dominios que desea en el certificado y hacer clic en el enlace de validación en el correo electrónico que sigue.
Costa
3

Para mí, tuve que cargar un sitio web simple de React en S3. Como describe barbolo, necesita un certificado para acceder al sitio a través de SSL. Si el sitio estático que desea implementar es lo suficientemente simple, puede:

  1. Sube a S3.
  2. No , no seleccione "Static alojamiento de sitios web"
  3. Convierta todos los enlaces relativos (a css, js, etc.) en enlaces absolutos.

por ejemplo, desde /css/media.css, debe convertirlo a https://s3-region-amazonaws.com/bucket-name/css/media.css (para mí, tuve que cambiar solo los enlaces en index.html)

  1. Hacer público solo el contenido del depósito.

Eso es. Puede acceder al archivo de índice a través de https.

Un sitio simple es un sitio con un archivo index.html principal que apunta a algunas páginas css y js.

alexopoulos7
fuente
Increíble. Gracias
user1874634
Si su aplicación tiene como objetivo la producción, esta es una mala idea.
Sébastien
sébastien comparte con nosotros más detalles por qué esto es una mala idea. Damos acceso de lectura pública a los objetos que no se van a depositar.
alexopoulos7
Es una forma buena y más sencilla, pero recuerde, para cada archivo de su aplicación, la solicitud viajará en Internet, lo que reducirá el rendimiento de su aplicación. Usar CloudFront es la mejor idea en estos escenarios.
Nitesh B.
@ NiteshB.CloudFront es doloroso cuando necesitas actualizar tus objetos S3 con frecuencia
Dustin Sun
0

Además de la respuesta de @ wikichen.

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

De forma predeterminada, puede entregar su contenido a los espectadores a través de HTTPS utilizando su nombre de dominio de distribución de CloudFront en sus URL, por ejemplo, https://dxxxxx.cloudfront.net/image.jpg .

Si desea entregar su contenido a través de HTTPS usando su propio nombre de dominio y su propio certificado SSL, puede usar una de nuestras funciones de soporte de certificado SSL personalizado.

Jason
fuente