Comment configurer SSL pour le compartiment Amazon S3

Réponses:

151

Vous pouvez accéder à vos fichiers via SSL comme ceci:

https://s3.amazonaws.com/bucket_name/images/logo.gif

Si vous utilisez un domaine personnalisé pour votre compartiment, vous pouvez utiliser S3 et CloudFront avec votre propre certificat SSL (ou en générer un gratuit via Amazon Certificate Manager): http://aws.amazon.com/cloudfront/custom-ssl- domaines/

reach4thelasers
la source
42
Ce n'est pas tout à fait vrai. Vous pouvez utiliser des noms de seau sans points: this-is-my-awesome-bucket.s3.amazonaws.com Amazon a un certificat générique. Étant donné que vous ne pouvez pas utiliser de points, vous ne pouvez pas avoir de domaine CNAME pointant vers votre bucket.
Docunext
4
attention aux noms de bucket contenant des points! le SSL ne fonctionnera pas sur les appareils iOS mais fonctionnera très bien dans Chrome. Voir stackoverflow.com/questions/3048236/…
Simon_Weaver
1
Amazon CloudFront le fera pour vous.
Greg
3
Pour avoir des noms de compartiment en notation par points (afin que vous puissiez utiliser l'alias Route 53) et que vous souhaitez PUT objets via REST, assurez-vous que le nom d'hôte correspond à la région. Par exemple, mon compartiment est dans us-west-2donc le nom d'hôte est en fait s3-us-west-2.amazonaws.comsinon vous obtenez une erreur.
noetix
1
sans cloudfront, pouvons-nous y parvenir?
Arun Kumar
28

Les certificats SSL de domaine personnalisé viennent d'être ajoutés aujourd'hui pour 600 $ / certificat / mois. Inscrivez-vous à votre invitation ci-dessous: http://aws.amazon.com/cloudfront/custom-ssl-domains/

Mise à jour : les certificats fournis par le client SNI sont désormais disponibles sans frais supplémentaires. Beaucoup moins cher que 600 $ / mois, et avec XP presque tué, cela devrait bien fonctionner pour la plupart des cas d'utilisation.

@skalee AWS a un mécanisme pour réaliser ce que l'affiche demande, «implémenter SSL pour un compartiment Amazon s3», ça s'appelle CloudFront. Je lis "implémenter" comme "utiliser mes certificats SSL," pas "simplement mettre un S sur l'URL HTTP, ce que je suis sûr que l'OP aurait pu supposer.

Étant donné que CloudFront coûte exactement le même prix que S3 (0,12 $ / Go), mais possède une tonne de fonctionnalités supplémentaires autour de SSL ET vous permet d'ajouter votre propre certificat SNI sans frais supplémentaires, c'est la solution évidente pour «implémenter SSL» sur votre domaine.

Joseph Lust
la source
64
CloudFront n'est pas S3.
skalee
6
@skalee Correct, mais si vous souhaitez y accéder via un domaine avec des certificats SSL personnalisés, comme le demande l'OP, vous pouvez configurer des certificats SSL CNAME personnalisés de cette façon et y accéder via CF.
Joseph Lust
2
Pour le moment, j'ai mis en place deux CNAME: static-s3 et static-cf, le premier pointant directement vers mon S3, le second vers CF. Le premier ne peut pas prendre en charge SSL, le second peut, mais c'est CF et non S3 comme le souligne skalee. C'est le mieux que nous puissions faire pour le moment.
Danger
2
WOW Je suppose qu'ils doivent compenser d'une manière ou d'une autre les coûts de stockage de plus en plus bas. au moins, c'est au prorata. si vous n'utilisez votre certificat SSL que pendant 1 heure par mois, c'est seulement 20 $ ;-)
Simon_Weaver
1
@ Elegant.Scripting si vous avez un certificat SSL dédié (pas un certificat SNI), cette machine a besoin d'une adresse IP dédiée qui entraîne des coûts. Une adresse IP dédiée est vraisemblablement nécessaire pour vous pour chaque emplacement dans le monde où S3 héberge vos données. Donc, cela s'additionne. Mais je pense que c'est principalement parce que les postiers n'en ont pas besoin et qu'ils peuvent augmenter le prix pour ceux qui en ont besoin. Si vous n'avez pas besoin de prendre en charge IE6, vous devriez être d'accord avec le certificat SNI sous CloudFront.
Simon_Weaver
11

J'ai trouvé que vous pouvez le faire facilement via le service Cloud Flare.

Configurez un seau, activez l'hébergement Web sur le seau et pointez le CNAME souhaité vers ce point de terminaison via Cloudflare ... et payez pour le service bien sûr ... mais 5 $ 20 $ VS 600 $ est beaucoup plus facile à digérer.

Détails complets ici: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/

Ralph Vugts
la source
1
Essayez mon guide ici: engagement.io/...
Ralph Vugts
3

Si vous en avez vraiment besoin, pensez aux redirections.

Par exemple, sur demande, assets.my-domain.example.com/path/to/filevous pouvez effectuer une redirection 301 ou 302 vers my-bucket-name.s3.amazonaws.com/path/to/fileou s3.amazonaws.com/my-bucket-name/path/to/file(rappelez-vous que dans le premier cas, my-bucket-nameil ne peut contenir aucun point, sinon il ne correspondra pas *.s3.amazonaws.com, s3.amazonaws.comau certificat S3).

Pas testé, mais je pense que cela fonctionnerait. Je vois cependant quelques pièges.

Le premier est assez évident, une demande supplémentaire pour obtenir cette redirection. Et je doute que vous puissiez utiliser le serveur de redirection fourni par votre bureau d'enregistrement de noms de domaine - vous devrez y télécharger le certificat approprié - vous devez donc utiliser votre propre serveur pour cela.

Le second est que vous pouvez avoir des URL avec votre nom de domaine dans le code source de la page, mais lorsque, par exemple, l'utilisateur ouvre la photo dans un onglet séparé, la barre d'adresse affiche l'URL cible.

skalee
la source
2
Je ne suis pas certain, mais je pense que cela pourrait causer des problèmes CORS.
xdhmoore
3

Cela n'est pas possible directement avec S3, mais vous pouvez créer une distribution Cloud Front à partir de votre compartiment. Accédez ensuite au gestionnaire de certificats et demandez un certificat. Amazon les offre gratuitement. Si vous avez confirmé la certification avec succès, attribuez-la à votre distribution Cloud Front. N'oubliez pas de définir la règle pour rediriger http vers https.

J'héberge quelques sites Web statiques sur Amazon S3, comme mon site Web personnel auquel j'ai attribué le certificat SSL car ils ont la distribution Cloud Front.

Mika Kujapelto
la source
et comment avez-vous attribué le nom de domaine?
netshark1000
Accédez d'abord au gestionnaire de certificats et demandez un nouveau certificat. Ajoutez-y votre domaine et ajoutez-y également des sous-domaines, si nécessaire. Cela ne fait vraiment pas de mal de mettre des sous-domaines là-bas, alors autant y mettre exemple.com et * .example.com.
Mika Kujapelto
0

Comme mentionné précédemment, vous ne pouvez pas créer de certificats gratuits pour les compartiments S3. Cependant, vous pouvez créer une distribution Cloud Front, puis attribuer le certificat pour Cloud Front à la place. Vous demandez le certificat pour votre domaine, puis l'attribuez simplement à la distribution Cloud Front dans les paramètres de Cloud Front. J'ai utilisé cette méthode pour servir des sites Web statiques via SSL ainsi que des fichiers statiques.

Pour la création de sites Web statiques, Amazon est l'endroit idéal. Il est vraiment abordable d'obtenir un site Web statique avec SSL.

Mika Kujapelto
la source
2
Pour tous ceux qui arrivent ici en utilisant google: n'oubliez pas de créer votre certificat AWS (également) dans la région de Virginie du Nord. Sinon, vous ne pourrez pas le sélectionner dans votre distribution CF
KLoozen