Information

【重要】Ericom ShieldにおけるRancher証明書期限切れについて(2023年9月15日 更新)

Ericom Shieldで利用しているRancherには証明書が存在し、この証明書の期限がEricom Shield初期構築後から起算して1年間となります。Rancherの証明書期限切れが発生することで、後述の事象や影響があります。

事象および影響

Rancherの証明書の期限切れが発生することで、RancherUI画面へのログイン操作および以下のShield開始/停止/確認スプリクトの利用が不可となります。

  • shield-start.sh
  • shield-stop.sh
  • shield-status.sh

※ Rancherの証明書の期限切れが発生した後にサーバOSの再起動を行った場合でも、内部的にEricom Shieldが自動的に起動されることでShieldの利用は可能です。

対象環境

Ericom Shield 19.09 kubernetes版以降の全バージョンが対象となります。

原因

Rancherの自己証明書が初期構築時に自動生成されており、その有効期限が1年となっています。

対応方法

説明

当対応を行うことで、証明書更新スプリクト実行日から有効期限が更新された自己証明書が再生成されます。今後、毎年当スクリプトの実行をせずに自動的にRancherの証明書の期限が更新できるよう対応を検討しています。

〇再生成される自己証明書の有効期限
  • 21.01以前:スプリクト実行から12か月後
  • 21.04以降:現在の証明書期限から11か月後

  ※ 現在の証明書期限は以下コマンドで確認可能。

$ sudo openssl s_client -connect localhost:8443 -showcerts < /dev/null 2>&1 | openssl x509 -noout -dates | grep notAfter

注意事項

手順の中で、Rancherの自己証明書の再生成に伴い、Rancher関連のDockerコンテナの再起動が行われます。スプリクト実行中は一時的にRancherAdmin画面やkubectlコマンドが利用できない状態となります。Shield管理コンソールやShieldブラウジング等、ユーザ利用に対しての機能には影響はございません。

手順

1:現在のRancher自己証明書期限を確認

$ sudo openssl s_client -connect localhost:8443 -showcerts < /dev/null 2>&1 | openssl x509 -noout -dates
実行例:
notBefore=Mar 7 15:40:30 2021 GMT
notAfter=Mar 7 15:40:30 2022 GMT

※notBeforeが作成日時。notAfterが証明書の期限日時。

2:Rancher自己証明書の更新スプリクトをダウンロードして実行

【Ericom Shield 21.01以前】

$ curl -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/master/Utils/rotate_rancher_cert.sh
$ chmod 755 ./rotate_rancher_cert.sh
$ sudo ./rotate_rancher_cert.sh

実行例:
kkauser@sh01:~$ ./rotate_rancher_cert.sh
+ docker ps
+ grep -oP \w+(?=\s+rancher/rancher)
+ export RANCHER_CONTAINER_ID=d48e2eab3532
+ docker container restart d48e2eab3532d48e2eab3532
+ docker exec -it d48e2eab3532 sh -c mv /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tls.$(date -Iseconds)
+ docker container restart d48e2eab3532d48e2eab3532
+ sleep 150
+ docker container restart d48e2eab3532d48e2eab3532
kkauser@sh01:~$

【Ericom Shield 21.04以降】

$ curl -O https://ericom-tec.ashisuto.co.jp/shield/rotate-rancher-certificate.sh
$ chmod 755 ./rotate-rancher-certificate.sh
$ sudo -E ./rotate-rancher-certificate.sh

実行例:
kkauser@sh11:~$ sudo ./rotate-rancher-certificate.sh
+ echo '[Start] Starts the certificate renewal process.'
[Start] Starts the certificate renewal process.
+ export LC_TIME=C
+ LC_TIME=C
++ date -d now '+%F %T'

~省略~

+ echo '[End] Certificate renewal process has been completed.'
[End] Certificate renewal process has been completed.
+ cleanup
+ timedatectl set-ntp off
+ timedatectl set-time '2022-05-31 09:00:48'
+ timedatectl set-ntp on
kkauser@sh11:~$

3:Dockerサービスを再起動

以下コマンドでDockerサービスを再起動してください。Dockerサービス再起動時にはShieldサービスも再起動されますので、ユーザ利用がない時間帯にて、実施をお願いします。

$ sudo systemctl restart docker.service docker.socket

4:Rancher自己証明書期限が更新されたことを確認

$ sudo openssl s_client -connect localhost:8443 -showcerts < /dev/null 2>&1 | openssl x509 -noout -dates

5:Rancher UI画面にログインが可能であることを確認します。

https://<RancherサーバIP>:8443/login

こちらの確認の時点で正常にRancher UI画面が表示されない場合やログインができない状態の場合にはRancherサーバの再起動(sudo reboot)を一度、お試しください。

6:Shieldが正常に可能な状態であることを確認します。

以下の点について確認をお願いします。

・[shield-status.sh]にてShield関連のworkloadsが全て起動していることを確認。

$ ~/ericomshield/shield-status.sh

・クライアント環境からshieldブラウザが正常に利用可能であることを確認。

お問い合わせ

本件についてご不明な点等ございましたら、弊社営業担当もしくはサポートセンターまでお問い合わせください。