どうも、Tです。
過去にvSphereの証明書問題で有効期限を調べてまとめました。vSphere7はどうなるのか気になったので備忘録です。
目次
ここでの結論
vSphere7.0u2では、STS署名証明書は10年になっていますが、マシンSSL証明書が2年のままで、これを過ぎるとvCenterサービスが使えなくなります。
やりたいこと
vSphere7の証明書周りを調べてみる。
特に気になったのは、下記のドキュメントでvCLSがWCPサービスによって管理されている部分です。以前まで確認していたところWCPはvSphere with Tanzuを管理するものであり、証明書も2年でした。vCLSのドキュメントを確認したところWCPが絡んでいる文章があり証明書が絡んでくると放置もしにくいので再調査です。
電源状態を含む 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を設定しています。
検証目的
検証概要
vSphere7の証明書期限を確認し、証明書期限切れの場合の動作を確認します。
検証方法
物理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を実行して確認してください。
vCSAのコマンドラインから確認
vcsaへログインして、shellモードで下記コマンドを実行します。
下記コマンドの詳細は、下記KBを参照してください。
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のサマリ画面で「証明書のステータス」エラーが表示されます。
これはデフォルトで用意されているアラーム定義「証明書のステータス」によって出力されています。
このアラームついては、下記のナレッジが公開されています。
vCenter Serverは、VMwareエンドポイント証明書ストア上のすべての証明書を監視します。 証明書の有効期限が近い場合、VMware vCenterServer内で証明書ステータスアラームがトリガーされます 。
期限の何日前に出力されるのかは定かではありませんが、STS証明書の有効期限のKBでは、下記の記載がありました。他の証明書も90日前にアラートが出力されると推測されます。
また、バージョンによって動作が異なるようなので注意が必要です。
重要:vCenter Server version 6.5 U3k、6.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詳細オプションで設定可能な値になります。
vCenter Serverは、VMwareエンドポイント証明書ストア(VECS)内のすべての証明書を監視し、証明書の有効期限が30日以内になるとアラームを発行します。vpxd.cert.threshold詳細オプションで警告されるまでの時間を変更できます。
–2021年8月11日追記 ここまで–
起動後に、Retreatモードを有効にしたところvCLSも正常に動いています。
Retreatモードについては、下記をご参照ください。
ここまでは、想定していた動作です。
2年の期限(vcsa)切れ1週間後
次にMACHINE_SSL_CERTとwcpの証明書が切れた1週間後の(未来時間)2023年8月16日検証時時刻に設定します。
vcsaから見ると未来時間になっていることが確認できます。
「no healthy upstream」が表示されログイン画面が表示されません。
20分放置したあたりです。vcsa管理画面に入ると自動起動のサービスを起動しようとしていますが、なかなか起動しません。
1時間放置したあたりです。ついにすべて停止状態で静止してしまいました。
おそらくサービス起動のタイムアウトになってしまったのでしょう。
「no healthy upstream」から変わることはありませんでした。
参考
まとめ
今回の確認では、停止状態から証明書期限が過ぎた後に起動するという本番ではありえなさそうな形でしたが、やはり放置していい問題ではなさそうですね。
解決方法の記事もまとめねば・・・。
2021年8月11日追記
証明書の再生成手順についてまとめました。