CloudFrontに独自のSSL証明書をアップする際につまずいたこと・・・
今更ながらですが、先日CroudFrontに独自のSSL証明書をアップする際につまずいたので、今後のために記録を残しておこうと思う。
今まで、ELBにしか証明書を適用したことがなかった私は、CloudFrontの場合でも
「AWSコンソールの画面からできるっしょ!」
とか思っていたのですが・・・
なんということでしょう。調べてみるとAWS-CLI経由でないとできないと記載があるではないですか。
ではAWS-CLI経由で証明書をアップしてみよう
色々調べてみると
aws iam upload-server-certificate \
--server-certificate-name <任意のサーバ証明書識別名> \
--certificate-body file://<証明書> \
--private-key file://<秘密鍵> \
--certificate-chain file://<中間証明書> \
--path /cloudfront/
というコマンドをたたけばいいらしい。
ここでつまずいたことは、
1.「file://」は書かないといけないよ
2. CloudFrontで使うときは「--path /cloudfront/」を書かないといけないよ
3. 識別名はELBで使っているのも含めてまだ使ってない名前にしないといけないよ
4. 改行せずに一行でコマンドを書いたほうがいいよ
5. IAMの権限がいるよ
といった点でした。「Pem形式か確認しろ!」などといったエラー文に惑わされて時間を使ってしまった・・・
無事アップしたあと、コンソール画面からCloudFrontに証明書を適用することができた。
ELBにも同じ証明書を適用しようね
無事にCloudFrontにSSL証明書を適用して、CloudFront経由でS3のimageファイルをSSLで見に行くようにできましたが、次はそのimageファイルを表示するWeb画面がおかしい。画像がリンク切れしている・・・
Web画面はELBに証明書を適用しているのですが、その証明書とCloudFrontの証明書が違ったから怒られていた。
ELBの証明証明書をCloudFrontに適用している証明書と同じものにした。無事画像が表示された。
同じ証明書を適用したほうが無難なのだろうか?それとも単純にCloudFrontがキャッシュしていたのだろうか?
このあたりに詳しい方がおられたらご教授していただけるとありがたいです・・・
また、今の証明書の期限切れが迫ってきたら同じ作業をしないといけないので、覚えているうちに書いておこうと思い、書いてみた。
こうならないためにも
独自のSSL証明書ではなくACM(Amazon Certificate Manager)を使うべきかと思う。
ACMは無料だし、更新もいらないし、取得するの簡単だし、適用するのも簡単な証明書。
ただ、CloudFrontで証明書を使う場合は北バージニアでACMを取得しないといけないので、今回のように、ELBにも同じ証明書を使わないといけない場合は、ELBを北バージニアで立てないといけないようなので、レイテンシーの問題がある。来年の更新時には東京リージョンでもCloudFrontでACMを使えるようになっていることを願っている。