もはや常時HTTPSが当たり前となっている環境ではありますが、HTTPSで注意しないといけないこととして、証明書の期限があります。
期限はなんのためにある?
まず大前提として、ふつうのコンピューターの暗号は、鍵が128ビットであれば可能なパターンは $2^{128}$ 通りしかないので、何も考えなくても全部試せば、理論的には解読可能です。
ただし、 $2^{128}$ は膨大な数で、毎秒1兆通り試せたとしても $10^{19}$ 年と、宇宙の寿命すら超越しかねない期間がかかってしまうため、現実的に総当たり攻撃は成立しません。SSLに使う暗号も、このような計算量的安全性に基づいています。
ということで、同じ鍵を使い続けることはそれだけ解読される危険が上がるということにもなりますし、また別な側面として使っている暗号の脆弱性が発見されることも考えられます。ということで、証明書はある程度のところで期限を切って、暗号方式や鍵をそこで強制的に見直させるようになっています。
証明書の更新について
まず、OVやEVといった、ドメイン以外の要素についても認証を行うようなものは、当然ながら機械的な処理だけで進まないので、人力による作業がどこかしら入ってくると思います。
DV証明書については、いろいろな方法があります。
- DNSのレコードに特定の値を書いておいて、それを確認する方法
- 当該のドメイン以下にHTTPでアクセスして、特定のURLに特定のファイルが置いてあるか確認する方法
- メールアドレスで確認する方法
ものによっては、自動化が可能ですし、AWSのACMなどでは半永久的な自動更新も実現していたりします。
実際に切らしてしまうと
諸事情があって自動化のシステムを組まずにLet's Encryptを使っていて、そしてそのまま期限の到来を忘れてしまいました。もちろんWebシステムは証明書エラーを起こすという事態に見舞われてしまいました。
対策
自動更新できるならそれ用のシステムを組んでしまったほうがいいですし、メール認証などでそれがかなわない場合には、証明書の期間を見てどこかでリマインダを仕掛ける、といった仕組みも必要かもしれません。