Amazon S3バケットのSSLを構成する方法


142

.NETアプリケーションを使用したデータのアップロードとダウンロードにAmazon S3バケットを使用しています。今私の質問は:SSLを使用してS3バケットにアクセスしたいです。Amazon s3バケットにSSLを実装することは可能ですか?


回答:


151

次のようにSSL経由でファイルにアクセスできます。

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

バケットにカスタムドメインを使用する場合、S3とCloudFrontを独自のSSL証明書と一緒に使用できます(またはAmazon Certificate Manager経由で無料の証明書を生成します):http : //aws.amazon.com/cloudfront/custom-ssl-ドメイン/


42
それは完全に真実ではありません。ドットなしのバケット名を使用できます。this-is-my-awesome-bucket.s3.amazonaws.comAmazonにはワイルドカード証明書があります。ドットを使用できないため、バケットを指すCNAMEドメインを持つことはできません。
Docunext 2013

4
ピリオドを含むバケット名に注意してください!SSLはiOSデバイスでは機能しませんが、Chromeでは問題なく機能します。stackoverflow.com/questions/3048236/…を
Simon_Weaver

1
Amazon CloudFrontがこれを行います。
グレッグ

3
ドット表記バケット名(Route 53エイリアスを使用できるようにする)を持ち、REST経由でオブジェクトをPUTしたい場合は、ホスト名がリージョンと一致することを確認してください。たとえば、私のバケットは入っているus-west-2ので、ホスト名は実際にはs3-us-west-2.amazonaws.comそうでなければ、エラーが発生します。
noetix 2016年

1
クラウドフロントなしでこれを達成できますか?
アルンクマール

28

カスタムドメインSSL証明書が本日追加され、1か月あたり600ドルの費用がかかりました。以下の招待にサインアップしてください:http : //aws.amazon.com/cloudfront/custom-ssl-domains/

更新:SNIの顧客提供の証明書追加料金なしで利用できるようになりました。月額600ドルよりもはるかに安く、XPがほぼ完全に終了しているため、ほとんどのユースケースで問題なく機能するはずです。

@skalee AWSはポスターが「Amazon S3のバケットのSSLを実装する」、を尋ね何達成するための機構を備えている、それが呼ばれていますCloudFront。私は「実装」を「SSL証明書を使用する」と読んでいます。「OPが推測したと確信しているHTTP URLにSを置くだけではありません。

CloudFrontのコストはS3($ 0.12 / GB)とまったく同じですが、SSLに関連する多数の追加機能があり、追加コストなしで独自のSNI証明書を追加できるため、ドメインに「SSLを実装する」ための明らかな修正です。


64
CloudFrontはS3ではありません。
スケーリー2013

6
@skalee正解ですが、カスタムSSL証明書を持つドメインを介してそれにアクセスする場合は、OPリクエストとして、この方法でカスタムCNAME SSL証明書を設定し、CFを介してアクセスできます。
Joseph Lust 2013

2
とりあえず、static-s3とstatic-cfの2つのCNAMEを設定しました。1つ目は私のS3を直接指し、2つ目はCFを指します。1つ目はSSLをサポートできず、2つ目はSSLをサポートできますが、skaleeが指摘しているように、それはS3ではなくCFです。それが今のところ私ができる最高だと思います。
危険

2
なんとか、ますます安くなるストレージコストをどうにかして埋め合わせる必要があると思います。少なくともそれはあん分されています。SSL証明書を1か月に1時間しか使用しない場合、それはたったの$ 20です;-)
Simon_Weaver

1
@ Elegant.Scripting(SNI証明書ではなく)専用のSSL証明書がある場合、そのマシンには専用のIPが必要であり、コストがかかります。おそらく、S3がデータをホストしている世界中のすべての場所に、専用のIPが必要です。つまり、それが追加されます。しかし、私はそれは主にポストの人々がそれを必要とせず、それらを必要とする人々のために価格を引き上げることができると思うだけです。IE6をサポートする必要がない場合は、CloudFrontでSNI証明書を使用できます。
Simon_Weaver 2016年

11

これはCloud Flareサービスを介して簡単に実行できることがわかりました。

バケットをセットアップし、バケットでウェブホスティングを有効にし、Cloudflareを介して目的のCNAMEをそのエンドポイントに向けます。もちろん、サービスの料金を支払いますが、$ 5- $ 20 VS $ 600のほうがはるかに簡単です。

詳細はこちら:https : //www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/


1
ここに私のガイドをお試しください:engaging.io/...
ラルフVugts

3

本当に必要な場合は、リダイレクトを検討してください。

例えば、への要求をassets.my-domain.example.com/path/to/fileあなたに301または302リダイレクトを行うことができmy-bucket-name.s3.amazonaws.com/path/to/fileたりs3.amazonaws.com/my-bucket-name/path/to/file(最初のケースであることを忘れないでくださいmy-bucket-name、それ以外の場合は一致しません、任意のドットを含めることはできません*.s3.amazonaws.com, s3.amazonaws.comS3証明書に記載)。

テストされていませんが、うまくいくと思います。ただし、問題点はほとんどありません。

最初のものは明白で、このリダイレクトを取得するための追加の要求です。そして、ドメイン名登録事業者が提供するリダイレクトサーバーを使用できるとは思いません。適切な証明書を何らかの方法でアップロードする必要があるため、独自のサーバーを使用する必要があります。

2つ目は、ページのソースコードにドメイン名を含むURLを含めることができることですが、たとえばユーザーが別のタブで画像を開くと、アドレスバーにターゲットURLが表示されます。


2
確かではありませんが、これがCORSの問題を引き起こす可能性があると思います。
xdhmoore 2018年

3

S3では直接実行できませんが、バケットからCloud Frontディストリビューションを作成できます。次に、証明書マネージャーに移動して証明書を要求します。アマゾンはそれらを無料で提供します。認定を正常に確認したものをCloud Frontディストリビューションに割り当てます。また、httpをhttpsにリダイレクトするようにルールを設定することも忘れないでください。

Cloud Frontディストリビューションがあるため、SSL証明書を割り当てた個人用Webサイトのように、Amazon S3でいくつかの静的Webサイトをホストしています。


そして、どのようにドメイン名を割り当てましたか?
netshark1000 2017年

まず、証明書マネージャーに移動して、新しい証明書を要求します。そこにドメインを追加し、必要に応じてそこにサブドメインも含めます。サブドメインをそこに置くことは本当に何も傷つけないので、example.comと* .example.comをそこに置くだけでもよいでしょう。
ミカクジャペルト2017

0

前述のように、S3バケットの無料の証明書を作成することはできません。ただし、Cloud Frontディストリビューションを作成してから、代わりにCloud Frontの証明書を割り当てることができます。ドメインの証明書を要求し、それをCloud Front設定でCloud Frontディストリビューションに割り当てるだけです。私はこの方法を使用して、静的ファイルを提供するだけでなく、SSLを介して静的Webサイトを提供しました。

静的なWebサイトの作成には、Amazonが最適です。SSLを使用して静的なWebサイトを取得することは本当に手頃な価格です。


2
googleを使用してここにアクセスするすべての人のために:バージニア北部リージョンでAWS証明書(および)を作成することを忘れないでください。そうしないと、CFディストリビューションでそれを選択できません
KLoozen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.