S3+CloudFront+Route53 + ACMの構築


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

はじめに

前回作成したS3静的ウェブサイト + CloudfrontにACMを実装します。手順としては簡単かと思いましたが、そもそも『ACMとは?』的なことを深掘りした自分用の言語理解メモとしての記事となります。

構成図

前回構築ACMなし
スクリーンショット 2022-02-21 11.54.42.png

今回構築ACMあり
スクリーンショット 2022-02-21 11.56.29.png

言語整理

AWS Certificate Manager とは

AWS Certificate Manager(以下、ACM)とは、とても大雑把に説明するとAWS上でSSL/TLSを利用することが可能となるサービス
AWS:ドキュメント AWS Certificate Manager とは?

ちなみにSSL/TLSとはインターネットで情報を送受信する際の仕組み(プロトコル)の一種で、サーバ〜PC間の通信を暗号化して安全を担保してくれるものです

↓導入の漫画は端的でイメージを掴みやすい
参考: SSL/TLSってなんだろう? 

通常SSL/TLSを利用するには、クライアントに説明して、CSR(Certificate Signing Request)ファイルと呼ばれる証明書の発行申請書を作成して、認証局にお金を支払って、証明書を発行してもらって、サーバへインストールするなどの面倒くさー(ry手続きが必要になります。が、ACMを利用することで簡単にSSL/TLSでの通信を利用することが可能となります。

SSL/TLSの種類について

名称 種類 認証方法 認証レベル 暗号化強度
ドメイン認証証明書(DomainValidationSSL:DV) ドメイン認証 ドメイン認証 同じ
組織認証証明書(OrganaizationValidationSSL:OV) 実在証明型 ドメイン認証・会社実在認証 同じ
EV証明書(ExtentedValidationSSL:EV) 実在証明拡張型 ドメイン認証・会社実在認証・電話実在認証 同じ

今回ハンズオンするACMはドメイン認証(Domain Validation)SSL の証明書です。後述するハンズオンの中では『パブリック証明書をリクエスト』でDNS検証か、ドメイン管理者に確認のメールが届いてメールに記載されているURLをクリックすることで証明書の取得が可能ですが、AWSの推奨によりDNS検証で手順を進めています。

他の組織認証・EV認証証明書は、組織が存在するかなど第三者からの審査があるため、今の所ここまで手軽にはなりません(そのぶん信頼度があるけれども)。しかしながらSSL/TLSは当たり前のようになっているので、クライアントがいるケースなどでは認証に要する必要な日数の確保など余裕を持って対応していきたいところです。
誰が認証するか?という違いなので、暗号の強度が変わってくるということはない(何と同じかツッコまれそうですが、図は”同じ”としてしまいました)

それでは早速ハンズオンをしていきます。
因みにに下記URLでは2018年記事ですが、AWSでHTTPS化のパターンが整理されており大変見やすく参考になると思います。
参照: AWSでWebサイトをHTTPS化 全パターンを整理してみました

ハンズオン

0:前回のS3静的ウェブサイト+CloudFront+Route53の確認

①AWS CLIを利用してAmazon S3静的ウェブサイトのホスティング
②S3静的ウェブサイト+CloudFrontの構築
③S3静的ウェブサイト+CloudFront+Route53の構築

1:ACMの作成

1.1 CloudFrontサービスページに遷移して前回作成したデイストリビューションを押下する

作成したディストリビューションをクリックします
スクリーンショット 2022-02-21 13.04.13.png

1.2 ディストリビューションの『一般』にある『設定』を押下、『設定を編集』を開き『証明書をリクエスト』を押下する

スクリーンショット 2022-02-21 13.10.00.png

1.3 別のページで『パブリック証明書をリクエスト』に遷移して、『ドメイン名』を入力して『リクエスト』を押下する

入力するのは前回作成したドメイン名です

スクリーンショット 2022-02-21 13.12.22.png

1.4 Route53にレコードを作成してACMの認証を発行する

スクリーンショット 2022-02-21 13.19.49.png

1.5 別ページからCloudFrontのページに戻り、設定を編集する

代替ドメイン名(CNAME)に利用するドメインを記入する
カスタムSSL証明書の右側にある更新ボタンを押下して、1.4で作成したACM証明書を付与する
スクリーンショット 2022-02-21 13.24.03.png

1.6 編集した設定が適応されているか確認する

スクリーンショット 2022-02-21 13.25.57.png

2:挙動の確認

2.1 Route53に登録したドメインでアクセスをする

スクリーンショット 2022-02-21 13.28.50.png

前回の設定(ACMがない)とは異なり現状の設定(ACMあり)だと、HTTP/HTTPSどちらからのアクセスも受け入れられる状態となっています。
HTTP通信はセキュリティ的な観点からも受け入れないようにCloudFrontを設定していきます

2.2 CloudFrontの『ビヘイビア』の『編集』より『ビューワー』を変更する

ビューワーの『HTTPS only』に設定を変更する
スクリーンショット 2022-02-21 13.34.20.png

上記設定後、HTTPでドメインにアクセスすると『403 ERROR』で接続ができないようになっていました。

さいごに

AWS座学で学習→分からないからハンズオン構築→付随する知識(今回ならSSL/TLS)を学ぶ→深く知識の定着という、よちよちした学習サイクルを回しながら学んでいきたいと思います。次回はこちらの構築にWAFやベーシック認証などを設定していきたいかと思っています。しかしタイトルばかりが長くなっていく。

いちおうですが前回及び今回の構築したものは全て削除してしまっているので、現状では確認できる状態にはありません

Last modified: 2022-02-22

Author