HTTPS pour le site Web statique Amazon S3 [fermé]

90

Je souhaite héberger un site Web statique uniquement HTTPS à l'aide d'Amazon S3 et CloudFront. Voici ce que j'ai fait jusqu'à présent:

  1. Configurer un compartiment S3 pour l'hébergement de site Web statique et y placer les fichiers de mon site Web
  2. Création d'une distribution CloudFront et pointage vers le compartiment S3
  3. Ajout d'un enregistrement CNAME dans les serveurs de noms de mon domaine pour le wwwsous - domaine pointant vers le bucket CloudFront.

Jusqu'à présent, tout va bien - je peux accéder à mon site Web en utilisant l' www.example.comadresse. Cependant, je souhaite que le site soit disponible uniquement via HTTPS, pour lequel j'ai acheté un certificat SSL auprès de GoDaddy.

Maintenant, la question est:

  1. Existe-t-il un moyen d'installer ce certificat SSL tiers sur mon site Web hébergé par S3?
  2. Existe-t-il un moyen d'avoir une redirection automatique http vers https avec cette configuration?
Jamix
la source
1
Puis-je le faire gratuitement?
Piyush S.Wanare
Vous pouvez obtenir un certificat SSL d'Amazon gratuitement, et il se renouvelle automatiquement. aws.amazon.com/certificate-manager Faites défiler jusqu'à l'icône du signe dollar :)
Costa
1
Je vote pour clore cette question comme hors sujet car elle ne traite pas de programmation
Zach Saucier
1
Pourquoi ne pas déplacer la question vers ServerFault?
nu everest
@nueverest Parce qu'il est trop vieux pour migrer.
gre_gor

Réponses:

63

Oui, à partir d'aujourd'hui, vous pouvez le faire sans frais.

Vous pouvez désormais utiliser HTTPS avec CNAME sur CloudFront car il prend désormais en charge les certificats SSL personnalisés à l'aide de l'indication de nom de serveur (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-pour-amazon-cloudfront.html

J'ai réussi à configurer un certificat StartSSL de classe 1 gratuit pour mon site statique distribué CloudFront sur S3 sans trop de problèmes (voir: Erreur CloudFront lors de la diffusion via HTTPS à l'aide de SNI ).

wikichen
la source
7
Guide détaillé: bryce.fisher-fleig.org/blog/…
elado
3
Commentaires: le guide de Bryce Fisher était très bon.
tresf
6
Il y a une subtilité ici. Vous pouvez avoir HTTPS pour un compartiment S3 s'il n'est pas configuré pour l'hébergement de site Web . Consultez la note qui dit «Les points de terminaison du site Web ne prennent pas en charge https».
skeller88 du
6
OK, pour dépasser la «subtilité» et décrire en anglais simple, voici ma chance. Un compartiment S3 avec un contenu de page Web statique (html) peut être transformé en site Web en quelques clics. Ce site Web ne peut utiliser que http. Si vous voulez https, vous devez utiliser le service Cloudfront d'AWS et le configurer pour que SNI obtienne https gratuitement. (Quelques navigateurs très anciens ou étranges ne prennent pas en charge SNI.) Le html et d'autres ressources peuvent être stockés sur S3 à faible coût. De plus, si vous obtenez le nom de domaine d'AWS, vous devez utiliser leur service Elastic Load Balance. Les frais sont de quelques centimes par concert.
Mike_Laird
5
Je trouve étonnant que cette réponse ait obtenu la bonne réponse, alors qu'elle ne répond tout simplement pas à la question: comme indiqué par @ skeller88, s3 https ne fonctionne pas pour l'hébergement de sites Web.
abbood
36

Le 21 janvier 2016, AWS a lancé AWS Certificate Manager , un service gratuit qui vous permet d'émettre un certificat SSL à utiliser avec Elastic Load Balancer et Cloud Front (ainsi qu'avec S3 également).

Vous pouvez en savoir plus sur: https://aws.amazon.com/certificate-manager/

Et vous pouvez vérifier comment déployer votre site Web S3 + Cloudfront avec SSL gratuit d'AWS à l' adresse : https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -aw /

Barbolo
la source
1
Je viens de configurer cela pour mon site ce matin. C'est un site statique hébergé en s3. C'était super facile. Je suis simplement allé au gestionnaire acm, j'ai demandé un certificat, j'ai mis mes paramètres de messagerie électronique pendant quelques heures (j'ai fini par rendre mes informations WHOIS publiques pendant que j'attendais l'e-mail de confirmation), puis j'ai configuré route53 pour pointer vers le point de terminaison cloudfront . Très content d'avoir trouvé ce commentaire.
paranoïaque
1
@paranoid Avec cela, puis-je héberger mon site Web s3 en https uniquement?
Piyush S.Wanare
1
@ PiyushS.Wanare oui, vous pouvez!
barbolo
Mettez le lien HTTPS dans l'enregistrement CNAME dans Route53.
Costa
@paranoid ne sais pas ce que vous entendez par "point de terminaison cloudfront" .. d'où puis-je obtenir ces informations?
abbood
17

À partir d'aujourd'hui, Cloudfront propose un SSL personnalisé: http://aws.amazon.com/cloudfront/pricing/

Gardez à l'esprit qu'ils facturent 600 $ / mois. Plus de détails sur le lien ci-dessus.

Christian Fazzini
la source
7
600 / mois ......
Pacerier
11
Vous ne payez que 600 $ si vous souhaitez une adresse IP dédiée. Si vous êtes satisfait d'utiliser SNI (qui n'est pas pris en charge par les anciens navigateurs), aucun frais supplémentaire ne s'applique
Martin OConnor
2
Si vous êtes prêt à prendre en charge uniquement les navigateurs modernes (via SNI), c'est maintenant beaucoup moins cher: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Andrew Newdigate
C'est GRATUIT maintenant! aws.amazon.com/certificate-manager Faites défiler jusqu'à l'icône du signe dollar. De plus, je pense qu'ils se renouvellent automatiquement. Et la configuration est aussi simple que de saisir les domaines souhaités sur le certificat et de cliquer sur le lien de validation dans l'e-mail qui suit.
Costa
3

Pour moi, j'ai dû télécharger un simple site Web React sur S3. Comme le décrit barbolo, vous avez besoin d'un certificat pour accéder au site via SSL. Si le site statique que vous souhaitez déployer est suffisamment simple, vous pouvez:

  1. Téléchargez sur S3.
  2. Ne sélectionnez pas "Hébergement de site Web statique"
  3. Convertissez tous les liens relatifs (en css, js, etc.) en liens absolus.

par exemple à partir de /css/media.css, vous devez le convertir en https://s3-region-amazonaws.com/bucket-name/css/media.css (pour moi, je n'ai dû changer que les liens dans index.html)

  1. Rendre public uniquement le contenu du bucket.

C'est ça. Vous pouvez accéder au fichier d'index via https.

Un site simple est un site avec un fichier principal index.html qui pointe vers certaines pages css et js.

alexopoulos7
la source
Impressionnant. Merci
user1874634
Si votre application cible la production, c'est une mauvaise idée.
Sébastien
sébastien s'il vous plaît partagez avec nous plus de détails pourquoi c'est une mauvaise idée. Nous accordons un accès public en lecture aux objets et non au compartiment.
alexopoulos7 du
C'est un moyen efficace et simple, mais rappelez-vous que pour chaque fichier de votre application, la demande voyagera sur Internet, ce qui réduira les performances de votre application. L'utilisation de CloudFront est la meilleure idée dans ce scénario.
Nitesh B.
@ NiteshB.CloudFront est pénible lorsque vous avez souvent besoin de mettre à jour vos objets S3
Dustin Sun
0

En plus de la réponse de @ wikichen.

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

Par défaut, vous pouvez fournir votre contenu aux spectateurs via HTTPS en utilisant votre nom de domaine de distribution CloudFront dans vos URL, par exemple, https://dxxxxx.cloudfront.net/image.jpg .

Si vous souhaitez diffuser votre contenu via HTTPS en utilisant votre propre nom de domaine et votre propre certificat SSL, vous pouvez utiliser l'une de nos fonctionnalités de prise en charge des certificats SSL personnalisés.

Jason
la source