未踏ジュニアでのコミュニケーション基盤として採用しているMattermostはdocker-composeで動いている。その中でLets encryptを用いてhttps化している。
ある時メンテ中にサーバーを再起動した際に、急にSSLエラーによってサーバを起動しようとしてエラーが起きた。一見しがちなミスであるのに、大きな時間の損失にもなりうる今回の問題を紹介する。
週5証明書までのRate limitを超えないためにSSL証明書を永続化しよう
少なくともMattermostに関しては自身がlets encryptを用いたSSL証明書を発行できる機能がある。自前でWebサービスをホスティングする際にはhttps-portalなども用いられるだろう。
どちらもSSL証明書が勝手に出てくれて便利なのだが、コンテナを立ては壊してを繰り返したとき再度SSL証明書が発行される。
再度発行されるだけなのが待ち時間の問題なら大した話ではない。この証明書、同一ドメインに対して毎週5個までしか発行できないのだ。
マウントしていないSSL証明書が5回失われると、来週までhttpsとはサヨナラすることになってしまう。
このような理由でSSL証明書のフォルダをマウントして永続化を必ず行うことを推奨する。
5回ではないかもしれない
この5回という制限、XXX.AAA.YYY.comなら、完全に一致するXXX.AAA.YYY.comなら週5個まで。YYY.com全体に対して50回となる。YYY.comのサブドメインを管理している人が自分だけではない場合、その週はすでに何回か使われているかもしれない。
そういう場合はcrt.shで特定のドメイン以下の証明書がどれだけ発行されているかを見ることができる。
上のURLの%以下は自分のドメインに置き換えよう。