初めての AWS で Laravel API をデプロイしてみた！ - 第 7 弾：SSL 化編

# 1. はじめに
私は2023年10月より、内定直結型エンジニア学習プログラム「アプレンティス」に2期生として参加しています。

https://apprentice.jp/

AWS について学んだので、Laravel API を AWS でデプロイする方法についてまとめました。
AWS に初めて触れる方の参考になれば幸いです。

### シリーズ一覧
長編になっているので、複数の記事に分けて公開しています。
本記事はその第 7 弾です。

1. [サーバー設置編](https://qiita.com/mosyaneko/items/0788e1011b792f137d5b)
2. [サーバー接続編](https://qiita.com/mosyaneko/items/55e75ee5a96920db5981)
3. [IP アドレス編](https://qiita.com/mosyaneko/items/0788e1011b792f137d5b)
4. [データベース編](https://qiita.com/mosyaneko/items/182438555c7d23e5a3e9)
5. [アプリケーション起動編](https://qiita.com/mosyaneko/items/f221be0fc56c270ee5fe)
6. [Webレイヤ冗長化編](https://qiita.com/mosyaneko/items/f221be0fc56c270ee5fe)
7. SSL 化編 ★本記事!!

# 目次
[1.はじめに](#1-はじめに)
[2.パブリック証明書のリクエスト](#2-パブリック証明書のリクエスト)
[3.ALB に HTTPS リスナーの追加](#3-ALBにHTTPSリスナーの追加)
[4.セキュリティグループで HTTPS 通信を許可](#4-セキュリティグループでHTTPS通信を許可)
[5.HTTP 通信を HTTPS 通信にリダイレクト](#5-HTTP通信をHTTPS通信にリダイレクト)
[6.最後に](#6-最後に)

# 2. パブリック証明書のリクエスト
**ACM** (AWS Certificate Manager) を利用して、SSL 化 (HTTPS 化)　していきます。

サービス検索窓に「Certificate Manager」と入力し、ACM のダッシュボードに移動します。
「証明書をリクエスト」をクリックします。
![スクリーンショット 2024-02-09 21.08.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/6cfaeb7e-85f0-e918-148a-bb8331277265.png)

「パブリック証明書をリクエスト」を選択します。
![スクリーンショット 2024-02-09 21.09.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/8861448c-8d1c-c901-3be1-2a223def87e2.png)

ドメイン名を入力します。
![スクリーンショット 2024-02-09 21.14.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/cf5e162e-898b-2f95-65dc-e36dcb2f0eb7.png)
この内容で「リクエスト」します。

証明書がリクエストされました。
ステータスは「保留中の検証」となっています。
![スクリーンショット 2024-02-09 21.15.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/7a5417fc-059d-608d-09ce-8d1600ed0ac3.png)

証明書 ID をクリックして、詳細画面に移り、「Route 53 でレコードを作成」をクリックします。
![スクリーンショット 2024-02-10 2.26.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/6d439cc5-ade9-b028-ec89-93290547c1cf.png)


![スクリーンショット 2024-02-10 2.27.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/a6a3d3a6-a51f-230f-ce7f-293fa3f2dc6d.png)
レコードが表示されるので、「レコードを作成」をクリックします。
証明書のステータスが「成功」となれば、パブリック証明書の発行が完了です。

# 3. ALBにHTTPSリスナーの追加
HTTPS 通信を受け入れるように、ALB にリスナーを追加します。
EC2 ダッシュボードの「ロードバランサー」から、作成したロードバランサーを選択します。

「リスナーとルール」タブから「リスナーの追加」に進みます。
![スクリーンショット 2024-02-16 0.49.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/fa62df6a-f99f-36e0-b461-425983062b21.png)

HTTPS, 443 番ポートを登録します。
「アクションのルーティング」は、作成したターゲットグループを選択します。
![スクリーンショット 2024-02-16 0.51.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/038f2baf-8f56-2761-443d-6ece8e6f762b.png)

証明書の取得先に「ACM から」を選択し、取得した証明書を選択します。
![スクリーンショット 2024-02-16 0.53.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/296c9345-3444-f40b-383b-2af272f81d03.png)
「追加」をクリック。

追加されましたが、このままでは「到達不可能」となっています。
セキュリティグループで HTTPS 通信を許可していないためです。
![スクリーンショット 2024-02-16 0.55.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/e531c598-f01d-47dc-5873-dde7b07a58c1.png)

# 4. セキュリティグループでHTTPS通信を許可
「セキュリティ」タブに切り替えると、セキュリティグループが表示されるので、クリックして詳細画面に移動します。
![スクリーンショット 2024-02-16 0.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/cad4613c-5e18-63f4-defc-780298094e11.png)

「インバウンドルール」の「インバウンドルールを編集」に進みます。
![スクリーンショット 2024-02-16 0.59.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/9511797f-4b6c-4d2b-8010-9b7227695786.png)

「ルールを追加」をクリックし、HTTPS, 443 番ポートを登録します。
![スクリーンショット 2024-02-16 1.00.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/8c2568f5-143f-eb63-c666-ddeaf5c8df4f.png)
「ルールを保存」をクリックします。
これで、HTTPS 通信できるようになります。

`https` でドメイン名にアクセスできました。
![スクリーンショット 2024-02-16 1.02.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/f5efd419-20c3-32fb-0979-e10680f70a99.png)

# 5. HTTP通信をHTTPS通信にリダイレクト
HTTP 通信でアクセスがあった場合に、HTTPS 通信でリダイレクトするように設定します。

EC2 ダッシュボードから「ロードバランサー」を開き、作成した ALB を選択します。

現在、HTTP も HTTPS もターゲットグループにルーティングする設定になっています。
これを、HTTP の場合は HTTPS にリダイレクトするよう編集します。
「HTTP:80」をクリックして詳細画面に移行します。
![スクリーンショット 2024-02-16 1.06.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/09ff0796-be55-7572-afcb-3a4130373439.png)

「リスナールール」の「ルールを追加する」に進みます。
![スクリーンショット 2024-02-16 1.17.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/d30e1198-6dc8-36ac-2ce9-b7e1ecdb7fb3.png)

任意の名前を入力します。
![スクリーンショット 2024-02-16 1.19.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/f6bd69d5-e103-5980-d7e6-efff5f80373e.png)


「条件の追加」をクリックし、以下のように登録します。
![スクリーンショット 2024-02-16 1.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/36b0db70-651a-27c5-cd6e-0154e7e4e14d.png)

「URL にリダイレクト」を選択します。
HTTPS, 443 番ポートを選択します。
![スクリーンショット 2024-02-16 1.14.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/6f30af09-3026-d7ec-e5e8-685fcb2330a6.png)

「優先度」は 1 としておきます。
![スクリーンショット 2024-02-16 1.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/0b384bc9-1589-0e2e-eb14-ab0d832940c1.png)
「次へ」、問題がなければ「作成」をクリックします。

作成できました。
![スクリーンショット 2024-02-16 1.23.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/2a5f3b46-7d8f-d430-578d-b85ff7e855a3.png)

これで、`http`としてアクセスした場合、`https`にリダイレクトされるようになりました！

# 6. 最後に
ここまでで、Laravel API を AWS にデプロイし、冗長化や独自ドメインの SSL 化にも対応してきました。
画像付きで操作方法がわかりやすいように努めました。
なぜその項目を選択するのか等については、まだ勉強中なこともあり、深く掘り下げなかった部分も多くあります。
さらに学びを深めて行きたいとおもいます。
お読みいただきありがとうございました。