『動かして学ぶ! Python Django開発入門(第1版)』で学ぶ際、
SSL化で用いるcertbot-autoが使えなくなっている。
これでは本書の意図通り、自動更新の設定が出来ない。
そして、90日間が有効期限となっているSSL証明書を手動で更新しなければならない。
※次のコマンド1行をEC2上で実行。(Windowsの場合PuTTyにて)
sudo certbot --nginx
参考記事:【Nginx】Let’sEncryptからのSSL証明書がcertbot-autoで取得できない際の対処
これを本来の目論見通り、自動更新できるようにする。
AWSで使われているOSはLinux。
Linuxに、cronという定期的なプログラムの自動実行用の常駐プログラムが入っている。
cronを設定する為に、次のコマンドを打つ。(cronへのコマンドの登録は下記の通行う。)
crontab -e
そうすると、vimエディターのような画面になるので、キーボードで'i'のボタンを押して「挿入モード」にして、次のように記載し、'Esc'ボタンを押して、:wqを押して、保存してエディターから退出。
30 07 25 */2 * echo 2 | sudo /usr/bin/certbot --nginx -d janken-time.com
この登録したコマンドは、
「(3か月に対して余裕を持って)2ヶ月おきに、日付が25日の日、朝7時30分に右側に記述したコマンドを実行してください」
という意味合い。
オリジナルのSSL証明書更新用のコマンドは、
sudo certbot --nginx
これを、
echo 2 | sudo /usr/bin/certbot --nginx -d janken-time.com
にしたのは、例に倣ってcertbotをフルパスにした上で、
次の画像の黄色枠のように、
「登録されている何番目のURLのものを更新しますか?」
と聞かれるので、応答で「1:janken-time.com」を自動応答出来るようにし、
(-dの後に、SSL証明書を適用するWebアプリケーションのURLを引数に設定すると良いそうです。chatGPTが教えてくれました。)
また、次の質問、
What would you like to do?
1: Attempt to reinstall this existing certificate
2: Renew & replace the certificate (may be subject to CA rate limits)
で、「更新」の意味の「2」を自動応答出来るようにする為。
(SSL証明書の有効期限が切れていないときには、この2つ目の引数も必要になる。)
echo 2 | sudo /usr/bin/certbot --nginx -d janken-time.com
このコマンドの有効性は次の画像のように実際に実行してみて確認できている。
3ヵ月後、
自動更新されていることを確認済!!
以上!!