ブログをHTTPS化した話 part 2

どうもこんにちは。

先日のpart1では、途中でめんどくなってHTTPSについての説明だけで終わってしまいました。

なので、今日はAWSでの証明書の取得とCloudFrontの設定とその際にハマったところを書きたいと思います。

※これらのサービスを完全に理解出来ているわけではなく、実際にやってみて起きた現象と解決方法をあれこれ試した結果なので、もしかすると原因も解決方法も本当は別のものがあるかもしれません。

証明書の取得

この項目は前提としてRoute 53で既にドメイン取得済みの状態で作業をしています。

  1. AWSのコンソール画面から「AWS Certificate Manager」を選びます。
    1. ここで注意があります…証明書を作成するリージョンを「米国東部(バージニア北部)」に変更してから作成してください…一部の記事を流し読みしていると、東京リージョンでも作成できるようになった…と言う風に書いてあったりしますが、詳しく読むとちょっと違いました。
    2. 実際は東京リージョンでも証明書は作成できますが、その証明書が適用出来るのはELBのみです。
      実際はCloudFrontに設定できる証明書は米国東部(バージニア北部)リージョンで作った場合のみです。
      それ以外のリージョンで作成できる証明書はELBにしか使えません…
  2. 「証明書のリクエスト」を選択肢、証明書を取得したいドメインを入力します。
  3. 検証方法を選択するの画面では、今回は「Eメールの検証」を選択しました。
  4. Eメールの検証を行うと、ドメイン取得時に登録したメールアドレスに認証メールが届きますので、そのURLにアクセスして「I Approve」を押すと認証され、先ほどの画面で「続ける」を押します。
  5. 最初の画面に作成された証明書表示されていると思います。

CroudFront開始の手順

今回は全てGUIから設定をしました。

  1. コンソール画面から「CloudFront」を選びます。
  2. CloudFront Distributionsと書かれているページの「Create Distribution」を選びます
  3. Select a delivery method for your contentと書かれているページ「Get Started」を選びます。
  4. Create Distribution画面では必要な項目をそれぞれ入力していきます。 ここでハマりました…
    1. 「Origin Domain Name」のバケットの一覧が表示されますが、ここで素直に選択するとバケットの中のWebページがディレクトリ構造になっている場合、トップページは表示されますがそれ以降のページがアクセス権がないと言われ表示されなくなってしまいます。 そのためWebページがディレクトリ構造になっている場合は、S3の画面からバケット内の「index.html」のリンクURLをコピーして貼り付けるとこの現象を回避できます。
    2. 1ページだけで他にコンテンツがない場合は、そのまま選択して問題ないと思います。
  5. Viewer Protocol Policyは今回はHTTPSのみアクセスさせたかったので、HTTPでアクセスしてきた場合は、HTTPSにリダイレクトするよう、「Redirect HTTP to HTTPS」を選びました。
  6. Distribution SettingsのSSL Certificateは「Custom SSL Certificate (example.com):」を選択し、プルダウンから先ほど作成した証明書を選択します。
  7. 最後に画面下の「Create Distribution」を押すとCloudFrontの設定が終わり、最初のCloudFront Distributionsの画面に追加されていると思います。 ※Statusが「In Progress」から「Deploy」に変わるまで約15分程度かかります。

Route 53の設定

ここはS3を独自ドメインで公開する時の手順と同じですので、細かい手順は省きます。

最後に、Route 53でAレコードのAliasをS3のバケットからCloudFrontで作成したDistributionを選択てやればOKです。

 
comments powered by Disqus