【apache】conohaのUbuntu18.04にLet's EncryptでSSL設定するまで

ubuntuでSSL設定するのが初めてだったのでまとめました

## 前提
(1) httpで設定したドメインにアクセスできる状態にあること
(2) ubuntuのバージョンは18.04であること

```bash:ubuntuのバージョンが18.04
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
```

(3) apacheのバージョンは2.4.29であること

```bash:apacheのバージョンが2.4.29
$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2018-10-10T18:59:25
```

## 手順
### ファイアウォールの穴あけ
ubuntuではファイアウォールの穴あけが必要らしいので、port443をあける。

```bash
$ sudo ufw status
To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
3306                       ALLOW       Anywhere                                 
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
3306 (v6)                  ALLOW       Anywhere (v6)

$ sudo ufw allow 443
$ sudo ufw reload
$ sudo ufw status
To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
3306                       ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
3306 (v6)                  ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)  
```

これでファイアウォールの設定は完了。

### Let's Encryptで証明書発行

インストールする。

```bash
$ sudo apt install certbot
```

証明書等の作成をする。以下のコマンドを叩けばおk。ドキュメントルートやドメイン、メールアドレスは自分の環境に合わせてください。
www.sample.jpも必要であれば-d www.sample.jpも-d sample.jpの後に入れてください。

```bash
$ certbot certonly --webroot --webroot-path /var/www/html/ -d sample.jp -m yourmail@info
```

このコマンドの後に2,3問質問されるので答えていけば、/etc/letsencrypt/live/sample.jp以下に必要なファイル群が生成されます。

```bash
$ ls /etc/letsencrypt/live/sample.jp/
cert.pem  chain.pem  fullchain.pem  privkey.pem  README
```

これでLet's Encryptの設定は終わりです。
ちなみにこの証明書は90日間しか有効じゃないので、90日たったら更新してください。

### apacheの設定変更

apacheのsslの設定ファイルを設定する

```bash
$ vi /etc/apache2/sites-available/default-ssl.conf

<VirtualHost _default_:443>
                ServerAdmin webmaster@sample.jp ←変更
                DocumentRoot /var/www/html
                ServerName sample.jp ←変更
                ServerAlias www.sample.jp ←wwwも必要であれば
                SSLCertificateFile      /etc/letsencrypt/live/sample.jp/cert.pem ←変更
                SSLCertificateKeyFile   /etc/letsencrypt/live/sample.jp/privkey.pem ←変更
                SSLCertificateChainFile /etc/letsencrypt/live/sample.jp/chain.pem ←変更
```

上記設定変更を完了後にssl有効化して、apacheを再起動する。

```bash
$ a2enmod ssl
$ a2ensite default-ssl
$ service apache2 restart
```


うまくいっていればこれでhttpsアクセスできるようになっています。
Let's Encryptの自動更新についてはまた今度〜