2021年3月26日金曜日

docker swram の証明書は初期構築時に期限切れの期限を伸ばしておいたほうがいいかも

概要

docker swarm は通信に tls を使うことができます
通信するポートは選択できますがデフォルトで swarm は自己証明書を内部的に生成しています
その証明書の期限がデフォルトだと 2160 時間 (90日) になっています
基本的には自動で更新してくれるので問題ないのですがログなどが出るので初期構築のときに期限を延ばしておいてもいいかもしれません

環境

  • Ubuntu18.04
  • docker 20.10.5

期限を短くして動作確認

最短で 1 時間にまで短縮できます

  • docker swarm update --cert-expiry 1h0m0s
  • docker swarm ca --rotate

これで期限が 1 時間になった証明書が再配布されます
試しに確認してみましょう

  • cat /var/lib/docker/swarm/certificates/swarm-node.crt | openssl x509 -noout -dates
notBefore=Mar 25 22:03:00 2021 GMT
notAfter=Mar 26 00:03:00 2021 GMT

JST に直すと時間は 09:03 に期限切れとなります

期限が近くなるとどうなるか

内部的に自動で証明書の更新を行うようなログが流れると思います

  • journalctl -xu docker.service
Mar 26 09:10:00 swarm2 dockerd[26069]: time="2021-03-26T09:10:00.000149868+09:00" level=info msg="renewing certificate" module=node/tls node.id=ojnx8crctp5vb5rjmrf8uln7b node.role=swarm-worker

証明書の期限が 09:03 でそのあとに流れた renewing のログが 09:10 になります
期限切れのあとで renewing のバッチが流れると証明書の期限が自動的に延伸されているのが確認できると思います

  • cat /var/lib/docker/swarm/certificates/swarm-node.crt | openssl x509 -noout -dates
notBefore=Mar 25 23:10:00 2021 GMT
notAfter=Mar 26 01:10:00 2021 GMT

問題点

これの問題点としては以下の 2 つあります

  • 証明書の期限切れと同時に更新してくれるわけではない
  • 証明書更新のログが流れ続けるので syslog を逼迫する可能性がある

特に大きな問題になるわけではないですが長い間蓄積すると結構な量になったりする恐れがあります

期間を延伸する

なので初期構築の段階で延伸してあげるのが良いかなと思います

  • docker swarm update --cert-expiry 876000h0m0s
  • docker swarm ca --rotate

上記だと 100 年になります
無限はできないので数を大きくしましょう

最後に

自分で SSL 証明書を設定している場合にはそれを管理すれば良いのですがそうでない場合はデフォルトだと自己証明書が作られるようです
更新などは勝手にやってくれているようなので基本面倒を見る必要はないのですが自己証明書が使われていることは認識しておいたほうが良いかもしれません

0 件のコメント:

コメントを投稿