初心者｜AWSのLightsailでSSL更新（bncert-toolでアップデート）

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

※本稿では、LightsailのSSL証明書、Let’s Encryptの証明書有効期限が切れた場合の更新手順を示します。

※ぜひ、こちらもご覧ください⇒[【初心者】AWSのLightsailでIP固定化と独自ドメインの紐付けとSSL化](https://qiita.com/tomokei5634/items/a5dfb8504989ed93c31b)


# 有効期限が切れた

うん。知ってた。SSL証明書の有効期限が切れるって。だってメールが来てたから。

## 有効期限が切れそうなときに、届くメール

* タイトルが`Let's Encrypt certificate expiration notice for domain "XXXXXX.info"` というメールが、期限の切れる約20日前と約10日前の２通、From `Let's Encrypt Expiry Bot <expiry@letsencrypt.org>` で届いておりました。

>（メールの文頭）
>Your certificate (or certificates) for the names listed below will expire in 10 days (on 11 May 21 09:39 +0000). Please make sure to renew your certificate before then, or visitors to your web site will encounter errors.
>（訳 by DeepL）
>以下の名前に対するあなたの証明書（または複数の証明書）は、10日後（11 May 21 09:39 +0000）に期限切れとなります。それまでに証明書を更新しないと、あなたのウェブサイトにアクセスした際にエラーが発生します。

## 有効期限が切れる前後の比較

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/8458a695-bae2-0cda-4e66-797f4be9b21b.png)

ちなみに...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/3604aad5-a819-5963-b579-7ec6b4919e3a.png)

↑ 有効期限が切れても、鍵マークは健全表示でした（これは知らなかった...切れたまま時間が経てばNGになるのだろうか...？）


# Let’s Encryptの有効期限を更新しよう

ココから本題です。
手順はとても単純。

Lightsailのターミナルにアクセスし、下記のコマンドを実行するだけ

```terminal:terminal
$ sudo /opt/bitnami/bncert-tool
```

ちなみに、このコマンドは初めてLightsailでSSL化するときと同じコマンドです。
ですので、詳細は**[コチラ](https://qiita.com/tomokei5634/items/a5dfb8504989ed93c31b#ssl%E5%8C%96%E3%81%99%E3%82%8B)**を参照ください

以下、更新中のスクショと、初回SSL化の際とは異なる点を記します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/8e21454a-da72-f52f-0c3b-e3a8d1c4e42c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/9e2e7bc2-13cb-55ad-b8d1-b7b14a88ffee.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/88052952-3230-75c7-b074-4e2002bf1d2e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/3cc7393f-8078-9437-22aa-75f770e66be3.png)


<font color="Orange">黄色★マーク</font>は、何かしらの入力を求められる部分です。
私の場合は、サブドメインも使っているので、`Domain list`には２つ入っています。

注目すべきは<font color="Red">赤色★マーク</font>の`Warning`のところ。

> Warning: A certificate for the list of domains you entered already exists. It 
will be used instead of generating a new one.
> （訳 by DeepL）
> 警告です。入力されたドメインのリストに対する証明書は、すでに存在しています。この証明書は新しい証明書を生成する代わりに使用されます。

要は、更新のことを言っているのでしょう。`Enter`を入力して進めてください。
テキスト入力するところは、最初の方の`Domain list`と、中盤の`E-mail address`ぐらいで、あとは`Enter`か`Y`の入力です。

## ちょっと寄り道：自動更新されない場合

気になるところは<font color="Green">緑色★マーク</font>のところ

> Some errors occurred
> The configuration was applied, but some of the changes could not be applied. 
Find the details below.
> Creating Let's Encrypt certificate: Automatic renewal not working
> （訳 by DeepL）
> いくつかのエラーが発生しました。
> 設定を適用しましたが、一部の変更を適用できませんでした。
> 詳細は以下のとおりです。
> Let's Encrypt証明書の作成。自動更新が機能しません

自動更新が上手く設定できなかったようです。
解決方法が**[ココ](https://docs.bitnami.com/aws/how-to/understand-bncert/#:~:text=Approach%20B:%20Self-contained%20Bitnami%20installations)**に載っていました。


### Step １） 自身が`Approach A`か`Approach B`かを調べる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/bb72a501-9d76-a76c-6a12-63d22a525d2d.png)

* 以下のコマンドを実行し`Approach B`だった場合は、次のステップへ（`Approach A`なら[ココ](https://docs.bitnami.com/aws/how-to/understand-bncert/#certificates-not-renewed-automatically)を熟読ください）

```
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
```

### Step 2） ​httpd-vhosts.confに追記する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/a627d351-1cbf-0456-b106-0c38fa32c5e5.png)
> （訳 by DeepL）
> アプローチ B: 自己完結型の Bitnami インストール。アプリケーションの httpd-vhosts.conf ファイルの VirtualHost ブロック内に、以下の設定を追加します。

```
 ​Alias /.well-known/ "/opt/bitnami/apps/letsencrypt/.well-known/"
 ​<Directory "/opt/bitnami/apps/letsencrypt/.well-known">
     ​Options +MultiViews
     ​AllowOverride None
     ​Require all granted
 ​</Directory>
```


対応後、もう一度`$ sudo /opt/bitnami/bncert-tool`を実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/b143f8a0-a41f-9b49-fe40-dd19d6db7f92.png)

無事に`Success`になりました。今後は自動更新されるはずなので、この記事（備忘録）を見直すこともないかな？


# 更新の結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283603/faf354c3-9886-08f2-4e05-4efa36780887.png)

ブラウザをリフレッシュしたら、ちゃんと有効期限が更新されていました。

# 参考サイト
* [Learn About The Bitnami HTTPS Configuration Tool](https://docs.bitnami.com/aws/how-to/understand-bncert/)
* [Connect To The Server Using SSH](https://docs.bitnami.com/aws/faq/get-started/connect-ssh/)