【vSphere7.0u2】証明書の有効期限はどうなったのか。マシンSSL証明書が切れるとどうなるか。

どうも、Tです。

過去にvSphereの証明書問題で有効期限を調べてまとめました。vSphere7はどうなるのか気になったので備忘録です。

【vSphere】vSphereの証明書有効期限の確認方法
どうも、Tです。 下記にある通り、vSphereの証明書問題が顕著化しそうで検証しています。バージョンごとに確認方法が違うため...
スポンサーリンク
アドセンス1

ここでの結論

vSphere7.0u2では、STS署名証明書は10年になっていますが、マシンSSL証明書が2年のままで、これを過ぎるとvCenterサービスが使えなくなります。

やりたいこと

vSphere7の証明書周りを調べてみる。

特に気になったのは、下記のドキュメントでvCLSがWCPサービスによって管理されている部分です。以前まで確認していたところWCPはvSphere with Tanzuを管理するものであり、証明書も2年でした。vCLSのドキュメントを確認したところWCPが絡んでいる文章があり証明書が絡んでくると放置もしにくいので再調査です。

https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-F589C01D-8FF5-4D44-A28C-7326C63BBCC1.html

電源状態を含む vCLS 仮想マシンの健全性は、EAM および WCP サービスによって管理されます。

環境

  • vCenterServer:7.0.2 17958471
  • vSphere ESXi: 7.0.2 17867351
  • vcsa管理のrootユーザーのパスワード無期限化済み
  • vSphereのSSOドメインのパスワード無期限化済み
  • NTPサーバーを起点とした時刻同期済み

操作は、Administrator@vSphere.localを使用しています。

vSphere環境はアップグレードではなくvCenterもESXiも記載バージョンでに新規インストールしています。(バージョンアップによる短い証明書は引き継いでいない状態)

vCenterは2021年8月9日にインストールしました。

物理のESXi上に時刻同期に関わるコンポーネントを準備しました。ESXiはNestedで構築し、vCenterは、Nested ESXi上に作成しています。

Windowsのw32tmは大幅な時刻のズレがある場合、時刻同期が行えないためMaxPosPhaseCorrection MaxNegPhaseCorrectionに0xFFFFFFFを設定しています。

巨大なタイム オフセットに対して W32Time を構成する - Windows Server
ドメイン内の大きな時間オフセットを防止するために W32Time を構成する方法について説明します。

検証目的

検証概要

vSphere7の証明書期限を確認し、証明書期限切れの場合の動作を確認します。

少し調べたところvSphere7.0Updateなし、Update1、Update2で確認方法が少々異なるようです。証明書期限も異なる可能性があります。今回は、Update2で確認しています。

検証方法

物理ESXiを含めて、時刻を未来時間に設定し証明書が切れた場合、どのようになるのか確認します。

未来時間にする際、差異が多い未来時間への同期はNTP上問題が発生する可能性が高いため、物理ESXi以外を停止して、未来時間設定後に起動します。

※この辺りは、常時稼働と少々動きがことなるかもしれません。

検証パターン

下記の順番で進めていきます。

  • vSphere7環境の証明書期限を確認
  • 時刻を期限切れ1週間前の未来時間にして確認
  • 時刻を期限切れ1日後の未来時間にして確認

証明書期限の確認

まずは、証明書がどうなっているか確認します。

vSphere Clientから確認

vSphere Clientのホームメニューから「管理」をクリックします。

「証明書」->「証明書の管理」をクリックします。

マシンSSL証明書の有効期限が2年になっています。マシンSSL証明書は、vSphere Cleintに接続する際のWebブラウザのSSLに利用されています。

STS署名証明書がvSphere Clientから確認できるのはvCenter7.0u2以降のようです。それ以外のバージョンの場合は、下記のKBを参考にchecksts.pyを実行して確認してください。

VMware Knowledge Base

vCSAのコマンドラインから確認

vcsaへログインして、shellモードで下記コマンドを実行します。

下記コマンドの詳細は、下記KBを参照してください。

https://kb.vmware.com/s/article/2015600
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

下記のような結果が出力されます。

root@testvcsa [ ~ ]# for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done
STORE MACHINE_SSL_CERT
Alias : __MACHINE_CERT
Not After : Aug 9 18:31:10 2023 GMT
STORE TRUSTED_ROOTS
Alias : bd586f4de09b9362895e8e930a663b3960f1207d
Not After : Aug 4 06:31:03 2031 GMT
STORE TRUSTED_ROOT_CRLS
Alias : 72a8c297bceec137d225d56ba828e2d38e3c1641
STORE machine
Alias : machine
Not After : Aug 4 06:31:03 2031 GMT
STORE vsphere-webclient
Alias : vsphere-webclient
Not After : Aug 4 06:31:03 2031 GMT
STORE vpxd
Alias : vpxd
Not After : Aug 4 06:31:03 2031 GMT
STORE vpxd-extension
Alias : vpxd-extension
Not After : Aug 4 06:31:03 2031 GMT
STORE hvc
Alias : hvc
Not After : Aug 4 06:31:03 2031 GMT
STORE data-encipherment
Alias : data-encipherment
Not After : Aug 4 06:31:03 2031 GMT
STORE APPLMGMT_PASSWORD
STORE SMS
Alias : sms_self_signed
Not After : Aug 9 06:54:04 2031 GMT
STORE wcp
Alias : wcp
Not After : Aug 9 06:50:30 2023 GMT

MACHINE_SSL_CERTが、vSphere Clientで表示されたいたマシンSSL証明書になります。

MACHINE_SSL_CERTをwcpの有効期限が2年であることがわります。※wcpはvSphere Clientには表示されていません。

なお、vSphere Clientでは2023年8月10日で、コマンドでは1日早い2023年8月9日になっているのは、コマンドがGMT(グリニッジ標準時)になっているからだと思われます。

vSphere Clientでは、コマンド出力結果の+9時間のJST時間になっています。

2年の期限(vcsa)切れ1週間前

MACHINE_SSL_CERTとwcpの証明書が切れる1週間前の(未来時間)2023年8月2日検証時時刻に設定します。

vcsaから見ると未来時間になっていることが確認できます。

vCenterのサマリ画面で「証明書のステータス」エラーが表示されます。

これはデフォルトで用意されているアラーム定義「証明書のステータス」によって出力されています。

このアラームついては、下記のナレッジが公開されています。

VMware Knowledge Base

vCenter Serverは、VMwareエンドポイント証明書ストア上のすべての証明書を監視します。 証明書の有効期限が近い場合、VMware vCenterServer内で証明書ステータスアラームがトリガーされます 。

期限の何日前に出力されるのかは定かではありませんが、STS証明書の有効期限のKBでは、下記の記載がありました。他の証明書も90日前にアラートが出力されると推測されます。

また、バージョンによって動作が異なるようなので注意が必要です。

VMware Knowledge Base

重要:vCenter Server version 6.5 U3k6.7 U3j、または 7.0 U1では、vCenter Single Sign-On Security Token Service (STS)署名証明書の有効期限が近づくと、毎週通知が届きます。通知は、STS証明書の有効期限が切れる90日前に開始され、有効期限が切れる前の1週間にわたって毎日になります。

–2021年8月11日追記 ここから–

STS証明書期限は上記KBの通り90日ですが、VECS(VMwareエンドポイント証明書ストア)については、有効期限が30日以内になるとアラームを発行します。これは、vpxd.cert.threshold詳細オプションで設定可能な値になります。

Set the Threshold for vCenter Certificate Expiration Warnings
vCenter Server monitors all certificates in the VMware Endpoint Certificate Store (VECS) and issues an alarm when a certificate is 30 days or less from its expi...

vCenter Serverは、VMwareエンドポイント証明書ストア(VECS)内のすべての証明書を監視し、証明書の有効期限が30日以内になるとアラームを発行します。vpxd.cert.threshold詳細オプションで警告されるまでの時間を変更できます。

–2021年8月11日追記 ここまで–

起動後に、Retreatモードを有効にしたところvCLSも正常に動いています。

Retreatモードについては、下記をご参照ください。

vSphere7.0u1からの追加機能vCLS(vSphere Cluster Services)とは何者なのか
どうも、Tです。 vSphere7.0u1からvCLS(vSphere Cluster Services)なるものが実装されま...

ここまでは、想定していた動作です。

2年の期限(vcsa)切れ1週間後

次にMACHINE_SSL_CERTとwcpの証明書が切れた1週間後の(未来時間)2023年8月16日検証時時刻に設定します。

vcsaから見ると未来時間になっていることが確認できます。

「no healthy upstream」が表示されログイン画面が表示されません。

20分放置したあたりです。vcsa管理画面に入ると自動起動のサービスを起動しようとしていますが、なかなか起動しません。

1時間放置したあたりです。ついにすべて停止状態で静止してしまいました。

おそらくサービス起動のタイムアウトになってしまったのでしょう。

「no healthy upstream」から変わることはありませんでした。

参考

VMware Knowledge Base
VMware Knowledge Base
VMware Knowledge Base
https://kb.vmware.com/s/article/2015600

まとめ

今回の確認では、停止状態から証明書期限が過ぎた後に起動するという本番ではありえなさそうな形でしたが、やはり放置していい問題ではなさそうですね。

解決方法の記事もまとめねば・・・。

2021年8月11日追記

証明書の再生成手順についてまとめました。

【vSphere7.0u2】マシンSSL証明書が切れた後にvCenterを直す方法(すべての証明書の再生成:オプション8)
どうも、Tです。 vSphere7の証明書周りを調べてみて、マシンSSL証明書が切れるとvCenter関連のサービスが起動しな...

スポンサーリンク
アドセンス1
アドセンス1
ブログランキング・にほんブログ村へ

シェアする

フォローする