LoginSignup
37
22

More than 1 year has passed since last update.

AWS EC2上のアプリのhttpリクエストをhttpsにした【初学者】

Posted at

はじめに

プログラミングスクール卒業時にオリジナルアプリケーションを作成しましたが、発表時にはまだまだ多くの課題が残っていました。その中でも、AWSにデプロイした際にhttpのままで、安全ではない通信、いわゆるSSL化対応が出来ていないということになりhttps対応をしたいと思い調べて対応した備忘録になります。
下記のさまざまなサイトを参考にさせていただきました。ありがとうございました。
各項目の詳細は今後勉強していきますので今回は手順のみ簡単に記載したいと思います。

参考記事

前提

今回はRuby on Railsでアプリを作成しAWSへデプロイ済みです。
(EC2-ElasticIP-ドメイン名)で紐付けしています。

ドメインはお名前.comさんで取得しています。

http・httpsとは?

httpとは「Hyper Text Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル)」の略で、Webサイトを環境に依らず問題なく表示するための通信規格(プロトコル)のことです。
URLの最初の部分で「http://~」と記載されています。
httpsとは、「Hypertext Transfer Protocol Secure(ハイパーテキスト・トランスファー・プロトコル・セキュア)」の略で、SSL(暗号化通信)によってセキュリティを高めたhttpのことです。
httpsにすることで、通信経路での第三者による情報の盗聴や改ざんのリスクを防止できます。

引用:
httpsとは? httpとのちがいやセキュリティ上の意味を初心者向けに解説!

実施内容

  • SSL証明書の取得
  • ロードバランサーの作成
  • ドメインとロードバランサーの紐付け
  • http通信をhttps通信へリダイレクト

SSL証明書の取得

まずは、https通信をするために「SSL証明書」を取得します。
AWSにログインし、「Certificate Manager」 を検索します。01.png
すると下記のような画面になるので 「証明書をリクエスト」 をクリック
02.png

証明書タイプは 「パブリック証明書をリクエスト」 を選択
03.png

「ドメイン名」 には取得したドメイン名を入力します。
「検証方法を選択」 では「DNS検証」を選択します。
「タグ」 については自分は特に設定しませんでした。
04.png

リクエストをしてしばらくするとステータスが 「発行済み」 に変わります。
その後 「Route53でレコードを作成」 を押します。
05.png

ロードバランサーの作成

一度「EC2ダッシュボード」に戻り、左側メニュー内にある 「ロードバランサー」 をクリック
06.png
「ロードバランサーの作成」 をクリック
07.png

この中の 「Application Load Balancer」「Create」 をクリック
08.png

Create Application Load Balancer

「Create Application Load Balancer」のページに遷移しますので下記の4項目についてそれぞれ設定をしていきます。

  • Basic configuration
  • Network mapping
  • Security groups
  • Listeners and routing

Basic configuration

「Load balancer name」 はわかりやすいようにアプリ名LoadBalancerとしました。あとはデフォルトのままですが写真のように設定しています。
09.png

Network mapping

「VPC」はデフォルトのままとし、「Mappings」は2つは設定しなければならないのでap-northeast-1aap-northeast-1cを選択しました。
10.png

Security groups

「Create new security group」 を選択し新たにセキュリティグループを作成し、作成したセキュリティグループを選択しました。(後述)
11.png

セキュリティグループを作成

「セキュリティグループ名」 はわかりやすくLoadBarancerSecurityGroupとし、「説明」 にもわかりやすいようにLoadBarancerSecurityGroupと記載しました。「VPC」 にはデフォルトで表示されているままにしています。
13.png
「インバウンドルール」「アウトバウンドルール」 はそれぞれ下記のように設定しました。

インバウンドルール

  • インバウンドルール1
    タイプ:HTTP
    ソース:0.0.0.0/0
  • インバウンドルール2
    タイプ:HTTPS
    ソース:0.0.0.0/0
    を設定しました。

アウトバウンドルール

  • アウトバウンドルール1
    タイプ:HTTP
    ソース:0.0.0.0/0
  • アウトバウンドルール2
    タイプ:HTTPS
    ソース:0.0.0.0/0
    14.png
    15.png
    そして、「セキュリティグループを作成」 を押して作成。

Listeners and routing

「Protocol」はHTTP「Port」は80に設定し、
「Create target group」 を選択し新たにターゲットグループを作成し、作成したターゲットグループを選択しました。(後述)
12.png

ターゲットグループを作成

「Choose a target type」Instancesを選択し、「Target group name」 はわかりやすくアプリ名TargetGroupとしました。
そのほかの箇所はデフォルトのままで写真のような設定になっています。
16.png
17.png

上段のInstance ID にチェックを入れInclude as pending belowを押すと下段のReviw targets に選択したインスタンスが表示されるので 「Create target group」 をクリック
18.png
先ほどの 「Listeners and routing」 の中の 「Default action」 で作成したターゲットグループを選択。
その後 「Create load balancer」 をクリックでロードバランサーの作成が完了

ドメインとロードバランサーの紐付け

まずは Route53 へアクセスし、 ホストゾーン を選択
19.png

「ドメイン名」 に自分が使用しているドメインが表示されるため選択し、 「詳細を表示」 をクリック
20.png

詳細が表示されたら、タイプが「A」と書かれた欄の右側に以前下の記事でドメイン名と紐づけたElasticIPの値が表示されているのでそれを選択します。
21.png

選択すると右側に 「レコードの詳細」 が表示されるので 「レコードの編集」 をクリック
22..png

「エイリアス」 にチェックを入れると入力フォームが変化するため、 「レコードタイプ」「トラフィックのルーティング先」 を下記のように変更します。
「レコードタイプ」
A-IPv4アドレスと一部のAWSリソースにトラフィックをルーティングします

「トラフィックのルーティング先」
Application Load BalancerとClassic Load Balancerへのエイリアス
アジアパシフィック(東京)[ap-northeast-1]
作成したALBのドメイン名(~elb.amazonaws.com)

上記に変更して「保存」を押してください。
23.png

http通信をhttps通信へリダイレクト

EC2ダッシュボードへ移動し、左側メニューの 「ロードバランサー」 を選択
先ほど作成したALBを選択し下部の 「リスナー」 をクリックし、 「HTTP:80」 のルールにある 「ルールの表示/編集」 をクリック
24.png

上部メニューの「+(ルールの追加)」をクリックしルールを下記のように追加します。
「IF」パス = *
「THEN」リダイレクト先 「HTTPS」、「443」
を選択して保存します。
25.png
26.png

これで設定は以上となります。

終わりに

まだまだAWSについて勉強不足なので一つ一つの設定について理解できていませんが、参照先のサイトでは詳しく説明してくださっています。勉強をして理解できるようにしていきたいと思います。
長い記事にお付き合いいただきありがとうございました。

37
22
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
22