https接続するために自動設定していたLet's Encrypt certificate(Let's Encryptの証明書)更新が上手くいっていなくて更新しなよ〜ってメールが来ました、、(◍•ᴗ•◍) 

# はじめに
ほとんどの人が見ないだろう記事を書いてみました！(◍•ᴗ•◍) 

結論ですが、色々確認したところ
**<font color="red">たまたまうまくいかなかったが濃厚そうです、、、</font>**

なのでそんな時はメール来るので自分で更新しよう！となりました！

そんな感じです！(◍•ᴗ•◍) 

また何かありましたら何か更新します！
ちなみに最初の証明書更新はAWSの[確かここらへん等](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html)参考にしています！

では話の続き、、、、、、、、、、、、、、、、、、、、

なぜか自動的に更新されるようにしているのがうまくいかない的な、、
ここら辺の権限いじったのでそれかどれかどれなんだろ〜〜みたいな、、(キットそれ (実際は違った))
ちなみに更新する際webサーバー停止して更新して再起動するのですが、
その再起動もうまく行っていなくてちょっとビックリしました
(アクセスできなかった、期限前だったのですぐ再起動すればいいのか〜再起動で問題なかったのでよかった。ふ〜〜 ※ssh接続してwebサーバーの再起動コマンドをうつのみで問題なく)。

# ことの発端、、、、

以下のようなメールが来ました、、
```
Your certificate (or certificates) for the names listed below will expire in 19 days (on 2023-05-02). Please make sure to renew your certificate before then, or visitors to your web site will encounter errors.

We recommend renewing certificates automatically when they have a third of their total lifetime left. For Let's Encrypt's current 90-day certificates, that means renewing 30 days before expiration. See https://letsencrypt.org/docs/integration-guide/ for details.
```
以下google日本語翻訳
```
以下にリストされている名前の証明書 (または証明書) は、19 日 (2023 年 5 月 2 日) で期限切れになります。それまでに証明書を更新してください。そうしないと、Web サイトへの訪問者にエラーが発生します。

証明書の有効期限が残り 3 分の 1 になったら、証明書を自動的に更新することをお勧めします。Let's Encrypt の現在の 90 日間の証明書の場合、有効期限が切れる 30 日前に更新することを意味します。詳細については、https://letsencrypt.org/docs/integration-guide/を参照してください。
```

# 本当に？？
まずは、今まで問題なかったので嘘であって欲しい私は確認しました！！(確認したブラウザはchromeです。)
結果、、ほんまや！！ち、ちくしょ~.となりました。以下は確認方法。

上の鍵印タップ => 『この接続は保護されています』タップ => 『証明書は有効です』タップ => 「有効期限」確認、、ホンマや！(誰かの関西弁がなんか染み付いている？？)

![スクリーンショット 2023-04-15 19.57.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/46de324c-751a-0288-c56e-e11497d20dee.png)


# じゃ！更新できるようにするぞ〜〜〜お〜〜

キットカットでキット権限あたりな気はしています、、(キットカットはキット違った)

少しでも参考になるように何をしているか等説明させていただきますが、
同じ環境でない場合違うかと、、、、ちなみにapache

- **何はともあれssh接続でアクセス。**※以下参考。
ちなみに私は個人のためssh接続常時させないようにssh接続する時のみ自分のip、ssh接続できるようにセキュリティグループ(AWS)調整しています。

```
$ ssh -i XXXX.cer XXXX@XXXX.XXXX.XXXX.XXXX
```

- **webサーバー(apache)停止** ※これしないとうまくいかなくて

```
$ sudo service httpd stop
```

- **証明書を取得更新のコマンド(ちなみに今回は更新)**
※ちなみにコマンド色々は`$ sudo certbot -h`で確認できます。

```
$ sudo certbot certonly
```

以下詳細(前はもっと聞かれたけど今回はそんなだった、キット更新だからですね)
```
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

Plugins selected: Authenticator standalone, Installer None
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): kaizenkibokijisaito.com
```

上記打って結果は以下

```
Cert is due for renewal, auto-renewing...
Renewing an existing certificate for kaizenkibokijisaito.com
Performing the following challenges:
http-01 challenge for kaizenkibokijisaito.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /XXXXX/letsencrypt/live/kaizenkibokijisaito.com/fullchain.pem
   Your key file has been saved at:
   /XXXXX/letsencrypt/live/kaizenkibokijisaito.com/privkey.pem
   Your certificate will expire on 2023-07-14. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
```

『Congratulations!(おめでとう！)』 私:やった〜〜(✿´ ꒳ \` )
『chain have been saved at:/XXXXX/XXXXX/XXXXX/XXXXX/XXXXX.pem』 私:保存されている、前と同じ箇所か確認。同じだった。ふ〜〜(✿´ ꒳ ` )

前に設定はしたのでひとまずこれでよし、`sudo certbot`的なのする方がいいのかな〜と思ったけどしなくても良さそうだったのでここにメモ程度に書いておきます。

- **webサーバー(apache)起動** ※停止していたので。

```
$ sudo service httpd start
```

- できたかな〜〜っ確認してみる！

お〜〜5月が7月になった〜〜〜ヽ(´▽｀)/
![スクリーンショット 2023-04-15 20.19.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/f246c674-a546-294d-906d-a10d72135f9f.png)

# (追加で確認)自動コマンドの確認

- 設定している`crontab`の内容確認

```
$ sudo vim /etc/crontab
```

```
XX XX XX * * root service httpd stop && certbot renew --no-self-upgrade && service httpd start
```

あ、自動のコマンドは`certbot renew --no-self-upgrade`だったかと、、
このコマンドがうまくいかなくなっているようなので打ってみる！もちろwebサーバー停止して


```
$ service httpd stop
$ certbot renew --no-self-upgrade
```

お〜〜予想通りエラーが出ました！
```
The following error was encountered:
[Errno 13] Permission denied: '/XX/XXX/letsencrypt/.certbot.lock'
Either run as root, or set --config-dir, --work-dir, and --logs-dir to writeable paths.
```

前はこんな感じのエラー出てこなかったけど、と思いましたが、、rootでやるの忘れていたので再度、、


```
# 取得した証明書をチェックし、有効期限が近づいている証明書を更新します
$ sudo certbot renew --no-self-upgrade
```

更新して有効期限近くないのでうまくいってしまいました、、、
やりすぎると、あれなので、、今回はここまで、webサーバー再起動してっと

```
Saving debug log to /XXXXXX/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /XXXXXX/letsencrypt/renewal/kaizenkibokijisaito.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificates are not due for renewal yet:
  /XXXXXX/letsencrypt/live/kaizenkibokijisaito.com/fullchain.pem expires on 2023-07-14 (skipped)
No renewals were attempted.
```


う〜〜〜ん確認が、、、、(◍•ᴗ•。◍)と思ったのですが、

実際の更新しなくて更新問題ない確認できる以下コマンド忘れていましたので早速！

```
$ sudo certbot renew --dry-run
```

エラーが出ました！！これで原因が追求できます！(✿´ ꒳ ` )っと思ったが後に続く、、

```
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /XXXX/letsencrypt/renewal/kaizenkibokijisaito.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator standalone, Installer None
Simulating renewal of an existing certificate for kaizenkibokijisaito.com
Performing the following challenges:
http-01 challenge for kaizenkibokijisaito.com
Cleaning up challenges
Failed to renew certificate kaizenkibokijisaito.com with error: Problem binding to port 80: Could not bind to IPv4 or IPv6.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
All simulated renewals failed. The following certificates could not be renewed:
  /XXXX/letsencrypt/live/kaizenkibokijisaito.com/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)
```

```
Failed to renew certificate kaizenkibokijisaito.com with error: Problem binding to port 80: Could not bind to IPv4 or IPv6.
```

え、、、
80ポート閉めちゃったと思って確認問題なし、、(AWSのセキュリティグループ)
http直ipでアクセス、う〜ん接続できるはできるぞ、、、
調べてみるとwebサーバー停止って書いてあった、、(停止してからやるの忘れてた！！)


とのことで、
念の為本来あるべき順序で再度確認

```
$ sudo service httpd stop

# 偽のやつ
$ sudo certbot renew --dry-run

# 終わったので
$ sudo service httpd start
```

うまくいった、、、、、！！！！
**<font color="red">ってことは、きっと停止あとすぐ`certbot`コマンド起動してたまたまうまくいかなかったが濃厚そうです、、、
</font>**

# 最後に

**<font color="red">**たまたまうまくいかなかったが濃厚そうです、、、**</font>**

そんな時は自分で更新しましょ！で自分は落ち着きました(◍•ᴗ•。◍)

あとはメールきたらなるべく早くに確認しましょう！で落ち着きました、、、とほほ。 

それかたまには自分で`certbot certonly`しなきゃいけない？とかも思ってしまいました、、

また何かあれば追記してみようと思います！