オブジェクトの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だと証明書の問題が発生します。そもそも証明書とドメイン名違いますから!
というわけで、バケット名はよく考えて命名しましょう!