HTTPS の証明書更新に失敗してたので手動で更新した
Let's Encrypt で HTTPS 化した Tasking Manager 3 の証明書更新が成功しませんでした。
動かなかったらどうしよ(
とか書いてたらその通りですよ…。
手動で証明書を更新する
VPS に接続して手動で更新を試みました。
$ sudo ~/src/certbot/certbot-auto renew Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/%ドメイン%.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cert not yet due for renewal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The following certs are not due for renewal yet: /etc/letsencrypt/live/%ドメイン%/fullchain.pem expires on 2018-XX-XX (skipped) No renewals were attempted. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
どうやら証明書自体は cron で更新されたっぽいです。
良く見ると表示された fullchain.pem
のフルパス名と /etc/nginx/sites-available/tm3
に記録した各種 pem のパスが異なっています。
一覧を見てみます。
$ sudo ls /etc/letsencrypt/live/%ドメイン%/ -lo total 4 lrwxrwxrwx 1 root 36 Sep 14 03:00 cert.pem -> ../../archive/%ドメイン%/cert2.pem lrwxrwxrwx 1 root 37 Sep 14 03:00 chain.pem -> ../../archive/%ドメイン%/chain2.pem lrwxrwxrwx 1 root 41 Sep 14 03:00 fullchain.pem -> ../../archive/%ドメイン%/fullchain2.pem lrwxrwxrwx 1 root 39 Sep 14 03:00 privkey.pem -> ../../archive/ドメイン/privkey2.pem -rw-r--r-- 1 root 682 Jul 12 14:49 README
どうやら /etc/letsencrypt/archive/%ドメイン%/
にあった各種ファイル名の最後にある数値がインクリメントされていて、 /live/%ドメイン%/
の各種ファイルは archive/%ドメイン%/
の新しいファイルにシンボリックリンクが貼られているようです。
ということで新しいファイルを nginx に認識してもらうために設定ファイルを書き換えます。
$ sudo vi /etc/nginx/sites-available/tm3 - ssl_certificate /etc/letsencrypt/archive/%ドメイン%/fullchain1.pem; - ssl_certificate_key /etc/letsencrypt/archive/%ドメイン%/privkey1.pem; - ssl_trusted_certificate /etc/letsencrypt/archive/%ドメイン%/fullchain1.pem; + ssl_certificate /etc/letsencrypt/live/%ドメイン%/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/%ドメイン%/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/%ドメイン%/fullchain.pem;
最後に nginx を呼び出し直してあげます。
$ sudo systemctl reload nginx.service
これで再び HTTPS 接続できるようになりました。