AWS(Cloud9)HTTPS化

#目次
- はじめに
 - 環境
 - 前提
- Cloud9準備
 - 環境作成 
 - 取り敢えず外部公開
 - indexを外部公開
  - indexファイル作成
- HTTPS化
 - Route53設定
 - ACM証明書発行
 - ALB作成
- おわりに

# はじめに
## 使用環境
- AWS Cloud9
- EC2
 - t2.micro (1 GiB RAM + 1 vCPU)
- Apache/2.4.39 (Amazon)

## 前提
- AWSアカウントを持っていること
- ドメインを取得可能(又は所持済み)

# Cloud9準備
## 環境作成
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/0efcebf1-e4ef-480b-486d-054ae8c6c811.png)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/d4104c2f-9dc7-c30b-039a-ada2ad686a48.png)
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/3e7bae53-832a-68a1-aad1-e2cf8ae4f578.png)
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/e5db3740-2d2c-11f8-2709-6ac1884724ca.png)
EC2を作成
取り敢えずは最低サイズを選択
OSはAmazon Linux
ネットワークの設定はいじらずに次

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/cb5e207c-fe5a-1218-d313-a258cd16d3c1.png)
内容を確認大丈夫なら作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/4cd11f80-0b5a-1c35-58cd-e248f330dc38.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/d1c58236-e5cf-6cf5-8286-89df8079d9ab.png)

## 取り敢えず外部公開
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/3099ad3a-87dd-2054-e0b6-b4a8181eb166.png)
下のウィンドウのbashに下記コマンドを打ちインスタンスIDを取得

```bash
curl 169.254.169.254/latest/meta-data/instance-id/
```
表示されたIDはコピーしておきます

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/db8e30b8-a0cc-0de3-5ca7-8d55e7ea4866.png)
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/513b1299-03cb-4b86-5fc0-564aa02779ff.png)
EC2を開き、インスタンスに移動
検索欄に先ほどコピーしたIDを貼り付ける

表示されたインスタンスをクリック
情報が下ウィンドウに表示されるのでセキュリティグループまでスクロール
セキュリティグループをクリックしてセキュリティグループへ移動

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/9d3c4e47-09bb-8004-82e7-ec5e95006855.png)
表示されたグループを右クリックしてインバウンドルールの編集

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/f327bd2f-a91a-0b4d-bb0c-5b56839f6481.png)
HTTPとHTTPSを追加

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/9a18ed6d-77c1-e7fd-eb41-65d9fa6673b5.png)

Cloud9に戻り下記コマンドを打ってください

```bash
curl http://169.254.169.254/latest/meta-data/public-ipv4
```
IPアドレスを取得できます後程つかいますのでコピーしておいてください

```bash
sudo service httpd start
```
URL欄に先ほどコピーしたIPアドレスを貼り付けて確認してみましょう
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/c1f53947-26ed-96d9-8428-0f8494125639.png)
これで接続できていることは確認できます
ですが、indexを表示するためのパスがデフォルトのままでは違うのでそれを直さなければいけません

## php動作確認、document root設定
Apacheのパスを直すのですが、ついでにphpのバージョンがデフォルトでは5.6なので7.3にします

```bash
#パッケージを更新
sudo yum update -y

#phpバージョン確認
rpm -qa | grep php

#php5.6一式アンインストール
sudo yum remove php56*

#PHP7.3一式インストール
sudo yum install php73*

#リンク削除
sudo unlink /usr/bin/php
#貼り直し
sudo ln -s /etc/alternatives/php7 /usr/bin/php
```
```bash
sudo vi /etc/httpd/conf/httpd.conf
```
httpd.confを変更
**変更する場所を間違えないように注意**

```bash:httpd.conf
User apache → User ec2-user
Group apache → Group ec2-user

DocumentRoot "/var/www/html" → DocumentRoot "/home/ec2-user/environment"
```

```bash
#ec2-userのセッション変数用のファイル書き込み可に設定
sudo chown root:ec2-user /var/lib/php/7.3/session

#設定情報確認用ファイルを配置(rootで設定したディレクトリに配置)
echo "<?php phpinfo();" > index.php
```



```bash
#再起動します
sudo service httpd restart
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/62cfb78d-7917-6c41-ef3c-b4d3e27040a3.png)
先ほどのIPアドレスを再度踏めば今回はphpinfo()が出力されます
無事確認できればphpも動作しています




# HTTPS化
ここからHTTPS化に入りますがこれにはRoute53でのドメイン取得又は登録が必要になります
取得に関しては今回はやりませんのでそれはまた別途確認して下さい
## Route53設定
![route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/83d30948-7a98-8a62-61ba-b6a7381944d3.png)
![14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/a7f0220e-2851-3a36-03b1-9e9d2916b2af.png)
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/cbeda60c-f2cd-2dad-8e64-a4062159e3c1.png)
Cloud9でコピーしたIPアドレスを値欄に貼り付けて作成
## ACMで証明書発行
![acm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/8608063a-cec0-bea2-f773-00393b0d1c4c.png)
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/77b9f5fa-a8dc-3696-90be-68e4cd694a8d.png)
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/09e51de7-cfe5-eba0-188a-086a6d94ddff.png)
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/0abbf023-4fd4-9796-312f-a51a1b4f0149.png)
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/31d179bd-6362-f319-09b0-f039c7fb8dcf.png)
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/32c23a30-43e0-1394-ec80-a15042c25e05.png)
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/a5c0d385-09ca-d8cd-ec97-05c28b04c7bc.png)
発行済みになるまで待つ

## ALBの作成
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/3fb5c943-16b5-a648-8b92-4916d7536e79.png)
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/deac3ef3-a752-43ea-1b68-d07a94917670.png)
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/b0c9a337-df7e-60f1-6b3c-b0703800dc0d.png)
![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/61bb43e2-2732-1138-a928-0893b61bd69f.png)
HTTPSを追加

![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/9ee6b506-708a-c7f3-4d9b-ae769ddd7c09.png)
アベイラビリティーゾーン2つ以上指定

![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/fa6a3cec-7f44-bc02-a2b2-cee0ab12c00b.png)
![27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/26ceffa1-ae36-d63e-5154-32143dcab81b.png)
HTTPとHTTPSを追加

![28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/cf6339ba-f2d7-adba-a8aa-a303190d100b.png)
成功コードを301に変更

![29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/22c41831-7994-4ae3-a294-cb9565bb7a0d.png)
ポート番号80でCloud9のインスタンスを登録済みに追加して残りは内容の確認をして作成

![31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/f1b5d911-cba2-f7fe-49dc-dc994b0c1edf.png)
作成したロードバランサーのセキュリティグループ欄のグループID(青文字)をコピーします

![30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/6af34915-21bb-a282-6334-cd32ca6104e8.png)
インスタンスのセキュリティグループへ移動

![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/0d0cef11-1d5a-443b-d871-27f5c1f80f2a.png)
インバウンドルール編集でHTTPを追加ソースには先ほどコピーしたALBのセキュリティグループIDを貼り付けて保存

![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/56a32102-3eeb-869d-220f-29f06fc46ece.png)
Route53で登録したドメインのホストにレコードセットを作成
エイリアスをはいにして、エイリアス先で作成したALBを選択して作成

![34.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378815/0774b5a2-48df-11c5-a3bf-7ef03cbc6875.png)
作成したサブドメインに対して、HTTPSでアクセスして動作を確認

# おわりに
HTTPS化には苦労した記憶があるので作成しました

2020/07/28 追記
改めて記事を見直したところ無駄な箇所があったので修正