torutkのブログ

ソフトウェア・エンジニアのブログ

SSLサーバー証明書(Let's Encrypt)の更新に失敗(crontabの書き方のつまらないミス)

昨年10月28日に、さくらVPSのサーバーにLet's EncryptSSL証明書を入れました。
Let's Encryptは、ドメイン認証SSL証明書を無償で発行するサービスを提供しており、これを利用しています。証明書の期限は3か月で、更新作業を頻繁にする必要があります。通常はcronに設定することが多いようです。

今日、そのサーバーにSSLでアクセスしたら証明書エラー(期限が切れている)が発生していました。
あれ、cronが動いていないのかな?

~$ sudo crontab -l
50 05 01 */3 * /usr/local/bin/certbot-auto renew --force-renew && /sbin/service reload nginx

cronのログを見たところ、1月1日にしっかり動作した記録があります。

Jan  1 05:50:01 www CROND[13550]: (root) CMD (/usr/local/bin/certbot-auto renew --force-renew && /sbin/service reload nginx)

取得したファイルのタイムスタンプは2017-01-01T05:50 になっています。

/etc/letsencrypt/archive/www.torukt.com/fullchain2.pem ほか

crontabのコマンドを実行すると、

$ sudo /sbin/service reload nginx
reload: 認識されていないサービスです。

あっ、service nginx reload が正しい順序でした。
手動でnginx のreloadをしたら、Webブラウザから正しく接続することができました。

ということでcrontab の記述を修正しました。

50 05 01 */3 * /usr/local/bin/certbot-auto renew --force-renew && /sbin/service nginx reload