オブジェクトのURLについておさらい
S3に保存したオブジェクトは、すべてURLがつきます。
例えば、東京のS3に「hoge」というバケットを作り、そこに「fuga.jpg」を保存したとすれば、http://s3-ap-northeast-1.amazonaws.com/hoge/fuga.jpgというURLが割り当てられます。 また、バケット名をサブホストとしても有効なので、
http://hoge.s3-ap-northeast-1.amazonaws.com/fuga.jpgでもOKです。
SSLも使えるよ!
さらに、S3はSSLも使えます。つまり、上記のオブジェクトは- https://s3-ap-northeast-1.amazonaws.com/hoge/fuga.jpg
- https://hoge.s3-ap-northeast-1.amazonaws.com/fuga.jpg
ヤバいのはどれだ?
さてここで問題です。以下のURLで、ヤバいのが一つだけあります。それはどれでしょう?(すべてパブリックにしてありますので、ブラウザで確認する事が出来ます。)
- http://s3-ap-northeast-1.amazonaws.com/with.dot/index.html
- https://s3-ap-northeast-1.amazonaws.com/with.dot/index.html
- http://with.dot.s3-ap-northeast-1.amazonaws.com/index.html
- https://with.dot.s3-ap-northeast-1.amazonaws.com/index.html
正解
S3のSSL証明書は、ワイルドカード証明書です。でも、ピリオドが含まれていると問題になります。ちょっと考えればすぐ分かる事なのですが、S3を直に参照させてSSLも通したい場合は、バケット名に気を使わないと後で泣く事になりますので要注意です!!
CNAMEも同じ事
suberu.dateofrock.comというバケットを作成して、なおかつ
images.hoge.com CNAME images.hoge.com.s3-ap-northeast-1.amazonaws.comとしてやれば、
のように、まるで自分のサーバーのようにURLを作る事が出来ます。
ですが、これもSSLだと証明書の問題が発生します。そもそも証明書とドメイン名違いますから!
というわけで、バケット名はよく考えて命名しましょう!
6 件のコメント :
4番の罠にはまって泣いて改修したあとにこのブログを見ました。
もっと早くこの記事を見ていれば・・・
わかりやすい記事で素晴らしいですね。
>DQNEO さん
意外にハマる落とし穴なんですよねー。コメントありがとうございます!
現在開発中のプロジェクトで、上記問題が潜伏していました。
先だって対策する事が出来ました。
ありがとうございました。
>匿名 さん
事前に対策できたようでよかったです!
私も現在開発中のプロジェクトで、心当たりのある内容でした・・・
構築前に気づかせていただき、感謝いたします。(今でも変わらいないですよね~)
>匿名 さん
今でも変わらないですよー。お役に立てて良かったです!
コメントを投稿