久々に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で契約している私の様な人なんてごくわずかだろうし、この手の記事にアクセスがないのはしょうがないことではある。自己満足。以上。