さくらのVPSでポッドキャストの配信を行っているが、これまではSSLを取得せずに放置してきた。
そしたらGoogle先生が怒って、ウェブ上での再生が出来なくなりました(笑)
と言うことでLet’s Encyptを使用してSSL証明を取得しまし。
今度の問題は更新です。
Let’s Encyptは3ヶ月毎に証明書を更新しないといけないのです。
更新自体は簡単なコマンドで実行可能。
./certbot-auto renew --dry-run
Let’s Encryptをインストールしたフォルダに移動するとcertbot-autoというプログラムがあるので、そのフォルダで上記のコマンドを実行します。
「–dry-run」というのが「テスト実行」のコマンドで実際には影響を受けないので大変便利。
Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
All renewal attempts failed. The following certs could not be renewed
こんな感じでエラーがでます。
これはhttpdが起動中のために発生する問題なのだそうです。
それを回避する為には「httpd stop」「httpd start」で対応すればいいわけですが、それでは面倒。出来れば1ラインで解決したい。
そこで、コマンド実行の前後にフックを設定して、そこで上記のコマンドを実行するようにします。
そんな事が出来るんですね。便利。
./certbot-auto renew --dry-run --pre-hook "sudo service httpd stop" --post-hook "sudo service httpd start"
これでエラー無くテスト実行が出来ました。
ではこれを自動実行出来る様にします。
cron(クロン)と呼ばれる自動実行機能があるのでそれを活用します。
やり方は色々あるのですが、viエディターなど使いこなせないのでWinSCPで直接ファイルをイジリに行きます笑い
「/var/spool/cron」というフォルダに設定ファイルがあると思います。
そこに自動実行のスケジュールを設定します。
2020/04/20注「/etc/crontab」かも・・・ 確認中です。
0 4 * * 5 root /your/path/certbot/certbot-auto renew --pre-hook "service httpd stop" --post-hook "service httpd start"
「0 4 * * 5」というのが実行タイミングです。
分、時、日、月、曜を表しています。
このせっていだと 0分、4時、毎週木曜 となっています。
certbot-autoのrenew機能は証明書の残期間が一定以下になると再発行を依頼するという便利なコマンドなので、毎週実行しても問題はありません。
logを残すように設定してあるので、logに実行の痕跡があれば設定は完了です。
ShimaBOX Blogという方の記事が大変参考になりました。
ほぼ、ここで説明されている通りにやっています(笑)
有り難うございます。
0コメント