ソフトバンクの大規模通信障害が、
証明書の期限切れによるものであったことは記憶に新しいですね。
clean-copy-of-onenote.hatenablog.com
そんな中、私も自分が運営しているホームページで、
証明書の期限切れをやらかしてしまいました。
そのサイトでは、証明書にlet's encryptを使っていて、
下の記事で書いているように、
証明書の更新は自動で行うように設定していました。
clean-copy-of-onenote.hatenablog.com
にも関わらず、証明書の更新がされなくなってしまったのです。
期限切れの証明書を使っていると、
Webページをアクセスした際に警告が表示されるので、
アクセス数も激減します。
そうならないためにも、
自動更新が止まった原因とその対策をまとめておきます。
症状
let's encryptによる証明書を利用しており、
定期的に証明書を更新を実行するようにしていましたが、
Webサイトにアクセスすると、
証明書が無効であるとのエラーが表示されるようになった。
原因
原因を調べるため、let's encrypt の自動更新時のログをみてみると、
どうやら、以下のパッケージの更新時にエラーが生じて自動更新のプロセスが止まっているようです。
- libssl1.1
- libssl-dev
- openssl
もう少し具体的に見てみると、
これらのパッケージに認証に用いる公開鍵が期限切れを起こしていて、
ワーニングを出していたために、
そこで止まってしまい、その後の証明書の更新に繋がらなかったようです。
証明書の更新も、要は公開鍵の更新ですが、
公開鍵の更新の際に必要な別の公開鍵の期限が切れていて、
その結果、証明書が更新できなかったということですね。
どれだけ公開鍵が多面的に重要な役割を果たしているかが分かりますね。
対処方法
問題となっているのは、上記の3つのパッケージの更新時にワーニングが出ていることなので、
手動でこれらのパッケージをアップデートしてしまえば、
一応の問題の解決になります。
ということで、
sudo apt-get install libssl1.1 libssl-dev openssl
を実行して、パッケージの更新を行います。
その後、証明書の更新を実行します。
certbot-auto renew --post-hook "service apache2 reload"
これで、問題なく証明書が更新されることを確認すれば、
一旦は証明書の更新に成功となります。
まとめ
証明書の期限が切れると、
ブラウザ上で警告が表示されることから、
アクセス数に大きく影響しえます。
一日一回は、自分のサイトにアクセスしているので、
問題が生じてからの発見はそこそこ早くできたと思いますが、
自動更新だからと安心せずに注意しておきたいですね。