【初心者】AWSのLightsailでIP固定化と独自ドメインの紐付けとSSL化

※本稿は記事：[【初心者】AWSのlightsailでWordPressを導入するまで](https://qiita.com/tomokei5634/items/9719731e355ad5299fc2)の続きとなるものです。

本稿では、AWSのLightsailでWordPressのインスタンスを立ち上げた後の工程として、IPの固定化、独自ドメインの紐付け、SSL化までの手順を示します。

# 大きな流れ
* １）IPを固定する
* ２）DNSで独自ドメインと固定したIPを紐付ける
* ３）SSL化する

# LightsailのIP固定化（静的化）
* インスタンスを立ち上げると`パブリックIPアドレス`が割り当てられます。ただし...
> 静的 IP アドレスを未設定の場合、インスタンスを停止または再起動するたびに、Lightsail で新しいパブリック IP アドレスが割り当てられます。
> （[Amazon Lightsail の静的 IP アドレス](https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/understanding-static-ip-addresses-in-amazon-lightsail) より）

* 独自ドメインと紐付けるために、まずIPを固定化（静的化）します。
* Lightsail上のマニュアル：[Create a static IP and attach it to an instance in Amazon Lightsail](https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/lightsail-create-static-ip)（日本語）

## 手順
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/91630f19-1242-55f4-19c5-e3a72e4bc670.png)

* （1）`ホーム`をクリック
* （2）立ち上げたインスタンスをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/050e561e-8417-ee7b-8a23-16a1d7d33fe9.png)

* (3)`ネットワーキング`をクリック
* (4)`静的IPの作成`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/6092508a-3182-a1eb-35d9-280a1a830e8c.png)


* (5)`静的IPの指定`に名称（任意の文字列）を設定。ただし、既存の名称（過去に設定中の名称）は利用不可。
* (6)`作成`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/d61842bf-feb6-a73a-f21b-1e37973c3f26.png)

* (7)IPの固定化（静的化）ができました。表示されている`静的パブリックIPアドレス`をブラウザのアドレスバーへ入力し、インスタンス先へアクセスできるかを確認してください。


# 独自ドメインと静的IP（固定化したIP）との紐付け
* 取得している独自ドメインと、上記で得た`静的パブリックIPアドレス`を関連付ける工程です。
* 独自ドメインの取得方法は、別記事をご参照ください。下記は、独自ドメイン取得済みであることが前提です。
* 下記は、独自ドメインを AWS Route 53 で管理している場合で記載します。
* 別のDNSサービスでドメインを管理している場合でも、やることは**Aレコードの作成だけ**です。

# 手順 （Route 53）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/105f3a6e-38d4-d0cd-5043-0b568bfbc651.png)

* (1)(2)AWSへログイン後、`Route 53` を検索してアクセス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/aff9d67b-ccb1-f34e-22d1-5ae7e8092c47.png)

* （3）左サイドエリアの`ホストゾーン`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/10b0e429-073c-cfbb-5369-3fc4de2a2f7b.png)

* (4)取得しているドメイン（紐付けたいドメイン）を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/a448e9a6-9213-4732-e988-36378cc70452.png)

* (5)`レコードを作成`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/5d506b87-0d0d-6776-9de5-a437530d8963.png)

* (6)レコードタイプが`Aレコード`であることを確認
* (7)上記で取得した**Lightsailの静的パブリックIPアドレス**を`値`へ入力
* (8)`レコードを作成`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/bdabbea8-c86d-0415-6f55-41be92516334.png)

* (9)レコードに追加したAレコード（値：Lightsailの静的パブリックIPアドレス）が存在するかを確認し、ブラウザから独自ドメインでアクセスできるかも確認してください。

## 補足）Lightsailの「DNS ゾーン」は使わないのか
* Lightsailでも「DNS ゾーン」が設定できるようです。
* つまり、独自ドメインを割り当てる方法が「LightsailのDNSを使う」か「独自ドメインを管理しているDNSを使うか（Route 53等）」の２つの選択肢があるということです。
* 私の場合は個人的に「LightsailのDNSを使う」メリットが分からなかったことと、どちらの選択においても「独自ドメインを管理しているDNS」を触る必要があったので、後者を選択しました。（あと、サブドメインをサブディレクトへ紐付ける、といった使い方もしたかったのも理由にあります）
* **Lightsailの「DNS ゾーン」は使わなくても、独自ドメインとの紐付けは可能です**

### 参考サイト
* [Amazon Lightsail での DNS](https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/understanding-dns-in-amazon-lightsail)
* [Amazon Lightsail でドメインの DNS レコードを管理する DNS ゾーンを作成する](https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/lightsail-how-to-create-dns-entry)
* [Amazon Route 53 を使用してドメインを Amazon Lightsail インスタンスにポイントする](https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-using-route-53-to-point-a-domain-to-an-instance)


# SSL化する
* 独自ドメインでアクセスできるようになりましたので、次にSSL化に着手します。
* といっても、とても簡単に設定できます。ターミナルからコマンドをいくつか打ち込むだけです。
* Lightsail上のマニュアル：[Amazon Lightsail でホストされている Bitnami スタックに SSL 証明書をインストールする方法を教えてください](https://aws.amazon.com/jp/premiumsupport/knowledge-center/linux-lightsail-ssl-bitnami/)（日本語）

## 手順 （Bitnami HTTPS Configuration Tool を使った場合）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/d005d548-f53a-901f-38fe-53d60468ac6f.png)

* (1)ターミナルを起動する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/dab91f6d-c9f9-2103-8598-1b903b31b364.png)


* (2)下記を実行する

```terminal:AWS-Lightsail-ターミナル
$ host example.ie
example.ie has address 192.0.2.0
```
* ※`example.ie`は独自ドメインに置き換えてください
* ※`192.0.2.0`の部分が、**Lightsailの静的パブリックIPアドレス**になっているかを確認してください

* (3)下記を実行する

```terminal:AWS-Lightsail-ターミナル
$ sudo /opt/bitnami/bncert-tool
```

* 途中、何やら色々と入力を求めらます

```
An updated version is available. Would you like to download it? You would need to run it manually later. [Y/n]：n
```
（訳）アップデート版をご用意しています。ダウンロードしてみませんか？後で手動で実行する必要があります。
* とりあえず[N]で。

```
Please provide a valid space-separated list of domains for which you wish to configure your web server.
Domain list []:example.ie
```
（訳）ウェブサーバーを設定するドメインの有効なリストをスペースで区切って入力してください。
* 紐付けているドメイン名を入力し、エンター

```
The following domains were not included: www.example.ie. Do you want to add them? [Y/n]: n
```
（訳）以下のドメインは含まれていませんでした: `www.example.ie`を追加しますか？
* `www`付きのマルチドメインへの対応について。とりあえず[N]で。

```
Please select the redirections you wish to enable or disable on your Bitnami 
installation.
Enable HTTP to HTTPS redirection [Y/n]: y
```
（訳）Bitnamiのインストールで有効または無効にするリダイレクトを選択してください。HTTP から HTTPS へのリダイレクトを有効にしますか？
* `http`でのアクセスを`https`へリダイレクトするかについて。[Y]で。

```
The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains: example.ie
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: example.ie
5. Enable HTTP to HTTPS redirection (example: redirect http://example.ie to https://example.ie)
6. Start web server once all changes have been performed

Do you agree to these changes? [Y/n]: y
```
（訳）
以下の変更が、Bitnami のインストールに対して実行されます。
1. ウェブサーバの停止します。
2. ドメイン`example.ie`に無料のLet's Encrypt証明書を使用するようにウェブサーバーを設定します。
3. 毎月証明書を自動的に更新するためのcronジョブを設定します。
4. Web サーバー名を `example.ie` に設定します。
5. HTTP から HTTPS へのリダイレクトを有効にします。 (例: `http://example.ie` から `https://example.ie` へのリダイレクト)
6. すべての変更が実行されたら、Webサーバーを起動します。
この変更に同意しますか？

* ここはもちろん[Y]で。

```
Please provide a valid e-mail address for which to associate your Let's Encrypt 
certificate.
Domain list: example.ie
Server name: example.ie
E-mail address []: xxxxx@gmail.com
```
（訳）Let's Encrypt証明書を関連付けるための有効なEメールアドレスをご記入ください。
* Eメールアドレスを入力してエンター。

```
The Let's Encrypt Subscriber Agreement can be found at:
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: y
```
（訳）
Let's Encrypt利用規約は以下のサイトでご覧いただけます。
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
Let's Encrypt利用規約に同意しますか？
* もちろん[Y]で。

〜〜 インストール中 （途中省略） 〜〜

```
Press [Enter] to continue:
```
* エンターして終わりです。
* ブラウザから、独自ドメインへアクセスしてください。httpsへ転送されていれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/7c2b47f6-51f1-89de-37fd-5c36facb930c.png)


本稿は以上となります。