見出し画像

Amazon Cloud Front・Route53・ACMを使って静的ウェブサイトを独自ドメイン・HTTPS化してみた

こんにちわ、アイシーティーリンクの藤井です。
前回(Amazon S3を使って静的Webサイトを構築してみよう!)の続きになります。

前回はAmazon S3の静的ウェブサイトホスティング機能を利用して、テストページを構築しました。しかし、この静的ウェブサイトホスティングのエンドポイントURLは、今現在、HTTPS通信をサポートしておりません。※REST APIエンドポイントへのアクセスはHTTPSです

画像1

インターネット上において様々なセキュリティリスクが高まっている昨今、パブリックに公開するウェブサイトはHTTPSにするのが主流です。HTTPとHTTPSの違いについては下記URLもご参照ください。
参考:httpとhttpsの違いとは? 知っておきたいウェブセキュリティの常識と今後

そのため、今回は、S3の静的ウェブサイトをHTTPSでアクセスできるようにするのと、前回適当につけたバケット名 fujii-bucket-test がそのままエンドポイントのURLになっているので、独自で取得したドメインのURLになるように、Amazon Cloud FrontRoute53ACM(Amazon Certificate Maneger)を利用した静的ウェブサイトの独自ドメイン・HTTPS化を試してみたいと思います。以下のようなイメージになります。

画像46

参考:
Amazon CloudFront 概要
Amazon Route 53
AWS Certificate Managerを使って無料でSSL証明書を発行する

Cloud Front経由でS3にアクセスできるようにする

まずは、Cloud Front の Distributions から「Create distribution」をクリック。

画像2

下記のように設定。

画像3

画像4

画像5

Distribution が作成される。

画像6

Distribution domain name にあるドメイン名をコピーしてブラウザでアクセスしてみる。

画像21

Cloud Front経由でテストページが表示できた。

S3バケットへの直接アクセスを制限する

まずは、ブロックパブリックアクセスをオンにするため、S3 のバケット画面にある「アクセス許可」からブロックパブリックアクセスの「編集」クリック。

画像8

「パブリックアクセスをすべてブロック」にチェックを入れ「変更の保存」をクリック。

画像9

フィールドに確認と入力し「確認」をクリック。

画像10

続いて、S3のバケットポリシーを編集するため、バケットポリシーの「編集」をクリック。

画像12

以下のように編集し、「変更の保存」をクリック。

画像13

(変更後)

画像15

以上で、Cloud Front経由でバケットにアクセスするポリシー設定が完了。試しに、静的ウェブサイトホスティングのエンドポイントURLからアクセスすると拒否されました。

画像11

独自ドメインをRoute53に設定する

今回は、お名前.comで無料で取得したテスト用ドメイン nanjakorya.net をRoute53にDNS設定してみます。
まずは、Route53のホストゾーン画面から「ホストゾーンの作成」をクリック。

画像15

ドメイン名を入力し「ホストゾーンの作成」をクリック。

画像16

ホストゾーンが作成されます。最初は4つのNSレコードとSOAレコードのみ作成されます。

画像17

続いて、上記で作成されたNSレコードの情報をもとに、お名前.comのDNSに設定をおこないます。お名前.comのドメイン設定画面の「ネームサーバーの変更」をクリック。

画像18

次の画面で、ドメインにチェック、「その他」タブから「その他のネームサーバーを使う」を選択し、前述のRoute53で作成された4つのNSレコードを入力して「確認」をクリック。

画像19

確認画面が出るので「OK」をクリック。

画像20

ACMでSSL証明書を発行する

続いて、ACMでCloud Front用のSSL証明書を発行します。Cloud Front に紐づけるSSL証明書は、米国東部(バージニア北部)us-east-1リージョンのACMで作成された証明書である必要があるので、us-east-1リージョンのACM画面から「今すぐ始める」をクリック。
参考:CloudFront で SSL/TLS 証明書を使用するための要件

画像21

「パブリック証明書のリクエスト」を選択し「証明書のリクエスト」をクリック。

画像22

ドメイン名に取得したいSSL証明書のドメイン名を入力します。今回は「 *.nanjakorya.net 」のようにワイルドカードの証明書を発行する設定にして、「次へ」をクリック。

画像23

「DNSの検証」が選択されていることを確認し「次へ」をクリック。

画像24

タグは空欄で問題ないので「確認」をクリック。

画像25

ドメイン名と検証方法を確認して「確定とリクエスト」をクリック。

画像26

検証画面で「検証保留中」と表示されますので、ドメイン名の左にある小さな▼ボタンをクリックし「Route53でのレコードの設定」をクリック。

画像27

確認画面が出るので「作成」をクリック。

画像28

Route53でのレコード作成が「成功」し、しばらくすると検証状態も「成功」に変わるので「続行」をクリック。

画像29

これでSSL証明書の発行が完了しました。

画像30

Cloud FrontへSSL証明書を設定する

Cloud Front のDistributions画面から、今回作成したDistributionをクリック。

画像31

「General」タブにある「Edit」をクリック。

画像32

Alternate domain name(CNAME)の「Add item」をクリックします。今回はhttps://www.nanjakorya.net でアクセスできるように「www.nanjakorya.net」と入力します。Custom SSL certificateは、今回ACMで発行したSSL証明書を選択し、一番下にある「Save changes」をクリック。

画像33

今回設定した内容が反映されました。これでCloud FrontにSSL証明書を紐づけ出来ました。

画像34

Route53にCloud Frontのドメインを設定

さいごに、Cloud Front に設定したドメイン「www.nanjakorya.net」のAレコードを設定します。Route53→ホストゾーン画面からドメイン名をクリックして「レコードを作成」をクリック。

画像35

レコード名「www」、レコードタイプ「A」、トラフィックのルーティング先は「エイリアス」をオンにして「Cloud Frontディストリビューションへのエイリアス」を選択、今回作成したディストリビューション名を指定し「レコードを作成」をクリック。

画像36

Aレコードが作成されました。以上でRoute53でのCloud Frontドメイン設定は完了です。

画像37

独自ドメインでブラウザからアクセス

今回 Cloud Front に設定した独自ドメイン 「www.nanjakorya.net」でブラウザからHTTPSアクセスしてみます。

画像39

テストページを表示できました!

画像38

接続もちゃんと保護されてます!

画像40

さいごに

ちょっと長くなってしまいましたが、今回は、Amazon Cloud FrontRoute53ACMを利用して、S3静的ウェブサイトの独自ドメイン・HTTPS化を試してみました。他の方々がやっているサイトを参考にしながら見よう見まねでやってみましたが、裏側の仕組みを知ることができたり、はじめて触れるサービスもあったり、とてもいい経験になりました。今後は、テストページじゃなく中身のあるページにしていこうかと思います。それでは、また次回お会いしましょう。


この記事が気に入ったらサポートをしてみませんか?