Let’s Encrypt サーバー証明書の自動更新が出来ない・・・

久々にwordpressの話。このサイトもSSL化してしばらく経つ。SSL化して得したことは別になにもないが(笑)、SSLの証明書の更新だけはやっておかないと、不審なサイトと認定されてしまう。そこで証明書の自動更新・・・と思ったが、ちょっと手間取ったので、備忘録。

証明書は無料のLet’s Encryptを使用しているのだが、証明書の期限が90日と短いのがたまに傷。ただサーバーにroot権限で入れる環境であれば、証明書の期限まで30日を切っている場合、自動的にもう90日期限を更新してくれる便利なコマンドを用意してくれている。なので気付いたときに、サーバーに入ってコマンドを打ち込めばいいのだが、Linuxにはcronという定期的にジョブを実行してくれるデーモンプロセスがあるので、証明書の更新もcronに任せよう、というのが今回の試み。

ちなみに例えばさくらのレンタルサーバとかだと、サーバーにroot権限でアクセス出来ないので、cronも設定出来ない・・・やりたければ、VPS(バーチャル・プライベート・サーバー)を借りるしかない。

さて、私の場合期限が今月末に迫ってきたので、自動更新が可能なはず。ということでまずは手動でテストしてみた。
Let’s Encryptの場合、 /usr/local/certbot/certbot-auto renew というコマンドで自動更新してくれるのだが、テストの場合はここに更に --dry-run というオプションをつけると実際には更新作業はせず、動作確認だけしてくれる。と言うわけで早速テスト実行。

/usr/local/certbot/certbot-auto renew --dry-run

とやると・・・・

-------------------------------------------------------------------------------
Port 80 is already in use by another process. This will prevent us from binding
to that port. Please stop the process that is populating the port in question
and try again.  For automated renewal, you may want to use a script that stops
and starts your webserver. You can find an example at
https://certbot.eff.org/docs/using.html#renewal . Alternatively you can use the
webroot plugin to renew without needing to stop and start your webserver.
-------------------------------------------------------------------------------

この様なメッセージが出て、更新出来ず・・・結局のところ、一度Apacheを止めてからでないと更新がうまくいかないようで、

/etc/init.d/httpd stop

としてApacheを止めたのち、先のコマンドを入れるとうまくいった。

それをふまえて、
/etc/init.d/httpd stop && /usr/local/certbot/certbot-auto renew --dry-run && /etc/init.d/httpd start

と前後にApacheの停止、起動を挟んで命令してみたが、どうもうまく行かず・・・試した結果、Apacheの停止から、証明書の更新の命令までは多少時間が空いた方がよい様だった。

と言う訳で、出来上がったcronがこちら! (コード上をドラッグすればスクロールします)

24 3 10 * * /etc/init.d/httpd stop
25 3 10 * * /usr/local/certbot/certbot-auto renew && /etc/init.d/httpd start

cronは先頭から、分、時間、日、月、曜日、そしてその後コマンドというように設定するのだが、上記では、毎月10日3時24分にApacheを停止し、その1分後の3時25分に証明書の更新とApacheの起動するように設定している。これだと毎月更新する感じになってしまっているが、証明書の更新は実際には期限の30日前以降にならないと実行されないので、これでOK。1分Apacheが止まるので、その間サイトが見られないが、その辺は過疎サイトなので全く問題はない・・・。

またまた全く需要のない記事を書いてしまった・・・。まあ、全くアクセス数のないブログを運営しながらVPSで契約している私の様な人なんてごくわずかだろうし、この手の記事にアクセスがないのはしょうがないことではある。自己満足。以上。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です