2012-06-26 16 views
110

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

ありがとうございます。

+0

[Amazon S3スタティックWebサイトでSSLを実装する](https://knightlab.northwestern.edu/2015/05/21/implementing-ssl-on-amazon-s3-static-websites) – vsync

答えて

125

あなたはこのようにSSL経由でファイルにアクセスすることができます:あなたのバケツのためのカスタムドメインを使用する場合は、あなたがあなた自身のSSL証明書と一緒にS3とCloudFrontをを使用する(または無料の1つを介してを生成することができます

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

Amazon証明書マネージャー):http://aws.amazon.com/cloudfront/custom-ssl-domains/

+32

これは完全ではない本当。バケット名をドットなしで使うことができます:https://this-is-my-awesome-bucket.s3.amazonaws.com Amazonはワイルドカード証明書を持っています。ドットを使用することはできないため、バケットを指しているCNAMEドメインを持つことはできません。 – Docunext

+1

@Docunext:これは私が何時間も試したところで問題を解決しました。それに感謝します! – hereandnow78

+4

ピリオドを含むバケット名に注意してください! SSLはiOS端末では動作しませんが、Chromeで正常に動作します。 http://stackoverflow.com/questions/3048236/amazon-s3-https-ssl-is-it-possible –

26

カスタムドメインのSSL証明書が今日、$ 600/cert/monthで追加されました。 http://aws.amazon.com/cloudfront/custom-ssl-domains/

更新:あなたの下の招待のためにサインアップSNIのお客様は追加料金なし本命are now availableを提供します。 $ 600/moよりもずっと安く、XPがほとんどなくなり、ほとんどの使用例でうまくいくはずです。

@skalee AWSには、「Amazon S3バケット向けにSSLを実装する」というメッセージを実現するためのメカニズムがあり、CloudFrontと呼ばれています。私はSSLの証明書を使うのではなく、単にHTTP URLにSをつけてOPを推測することができると確信しています。

CloudFrontはS3とまったく同じです/ GB)、SSLの周りに追加機能がたくさんあり、追加費用なしで独自のSNI証明書を追加することができます。

+57

CloudFrontはS3ではありません。 – skalee

+4

@skalee正しいですが、カスタムSSL証明書を持つドメイン経由でOPリクエストとしてアクセスする場合は、カスタムCNAME SSL証明書をこの方法で設定し、CF経由でアクセスできます。 –

+1

当面は、static-s3とstatic-cfという2つのCNAMEを設定しています。最初のものはS3に、2番目はCFに向いています。最初はSSLをサポートすることはできませんが、2番目のことは可能ですが、それはCFであり、S3ではなくSkaleeが指摘しています。それは今の私たちができると思う最高のものです。 – Danger

3

本当に必要な場合は、リダイレクトを考える。例えば

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

テストされていませんが、うまくいくと思います。しかし、私はいくつかの問題を見る。

最初のものはかなり明白です。このリダイレクトを取得する追加のリクエストです。あなたのドメイン名レジストラが提供するリダイレクションサーバーを使用することはできません。何らかの理由で適切な証明書をアップロードする必要があります。そのためには独自のサーバーを使用する必要があります。

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

+0

私は確信していませんが、これはCORSの問題を引き起こす可能性があると思います。 – xdhmoore

8

Cloud Flareサービスで簡単にこれを行うことができました。

バケットをセットアップし、バケット上でウェブホスティングを有効にし、クラウドフレア経由でそのエンドポイントに希望のCNAMEをポイントして、もちろんサービスに支払う...しかし、$ 5- $ 20 VS $ 600は胃に対してずっと簡単です。ここ

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

+0

これは私にとっては役に立たなかった。 'アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります。将来のすべてのリクエストをこのエンドポイントに送信してください。 subdomain.mydomain。comの s3.amazonaws.com ' – Jay

+0

ここに私のガイドをお試しください:https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/ –

2

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

Amazon S3で私の個人的なウェブサイトのようにいくつかの静的なウェブサイトをホストしています:DeveloperクラウドフロントディストリビューションにSSL証明書が割り当てられています。

+0

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

+0

まず、証明書マネージャーにアクセスし、新しい証明書を要求します。そこにドメインを追加し、必要に応じてそこにサブドメインを追加します。サブドメインを置くために何かを傷つけることはありません。example.comと* .example.comをそこに置くだけです。 –

0

前述のとおり、S3バケットの空き証明書を作成することはできません。ただし、クラウドフロントディストリビューションを作成して、代わりにクラウドフロントの証明書を割り当てることができます。ドメインの証明書を要求し、クラウドフロントの設定でクラウドフロントディストリビューションに割り当てます。私はこの方法を使ってhttps://laina-apu.fi/のような静的なウェブサイトを提供し、https://casino-professor.com/en/のような静的ファイルを提供します(サブドメインから画像が提供されている様子を見てください)

静的なウェブサイトの作成のためにはAmazonがあります。 SSLを使用して静的なWebサイトを取得するのは本当に手頃です。

関連する問題