どうも、Tです。
vSphere7の証明書周りを調べてみて、マシンSSL証明書が切れるとvCenter関連のサービスが起動しなくなることを確認しました。その状態から回復させる方法を試したので備忘録です。
2021年8月11日追記
Option8を使うのが推奨のようです。未解決の問題も解決できているので下記をご参照ください。
目次
ここでの結論
KB2112283にあるように、「迅速なリカバリ」にはいいのかもしれませんが、下記の理由から、安直にできると思わない方がいいかと感じました。
- ソリューションユーザー証明書が10年から置き換え後は2年になってしまう
- リカバリ後も証明書エラーがでる(未解決)
- リカバリ後にvCLSが動かない(未解決)
やるとしてもVMwareサポートへ問い合わせが必要かなと思われます。
やりたいこと
「【vSphere7.0u2】証明書の有効期限はどうなったのか。マシンSSL証明書が切れるとどうなるか。」でマシンSSL証明書が切れた状態で、正常に使えるようにするリカバリできるのか?を試します。
VMware認証局(VMCA)の証明書を使用して、マシンSSL証明書とソリューションユーザー証明書を再作成して置き換える方法です。
新しい自己署名 VMware 認証局の証明書を使用して vSphere 6.x/7.x の証明書を再生成する (2112283)
この記事では、VMware Certificate Authority (VMCA) で新しい自己署名証明書を使用して vSphere 6.x/7.x の証明書を再生成する手順を説明します。
注:このプロセスは、証明書の期限が切れたシナリオを迅速にリカバリするのに役立ちます。
なお、上記のKBを実行するにあたりSTS証明書の有効期限内である必要があります。
注: STS 証明書の有効期限が失効している場合、以下の手順での証明書の置き換えは失敗しロールバックされます。STS 証明書の有効期限を確認する KB を参照し、必要な場合は失効した STS 証明書を置換します。
環境
検証環境は、先ほど紹介した記事の続きになります。
- vCenterServer:7.0.2 17958471
- vSphere ESXi: 7.0.2 17867351
VMware 認証局(VMCA)の証明書から再作成(オプション4)
vcsaにSSH接続し、shellモードで下記コマンドを実行します。certificate-managerコマンドは、証明書周りを操作するためのツールになります。
/usr/lib/vmware-vmca/bin/certificate-manager
今回は、「4. Regenerate a new VMCA Root Certificate and replace all certificates」を使用するため、画像に沿ってOptionに4を指定しSSOアカウントとパスワードを入力します。このオプションは「8. Reset all Certificates」を利用することもできるようです。
注:また、[オプション 8] (Reset all Certificates) を選択することもできます。どちらのオプションも実行する機能は同じです。(違いはオプション8が証明書の自動ロールバックを実行しないことです)
この作業を始めて行うときはVMCAから発行される証明書定義に必要な項目を入力していきます。
Please configure certool.cfg with proper values before proceeding to next step. Press Enter key to skip optional parameters or use Default value. Enter proper value for 'Country' [Default value : US] : Enter proper value for 'Name' [Default value : CA] : Enter proper value for 'Organization' [Default value : VMware] : Enter proper value for 'OrgUnit' [Default value : VMware Engineering] : Enter proper value for 'State' [Default value : California] : Enter proper value for 'Locality' [Default value : Palo Alto] : Enter proper value for 'IPAddress' (Provide comma separated values for multiple IP addresses) [optional] : Enter proper value for 'Email' [Default value : email@acme.com] : Enter proper value for 'Hostname' (Provide comma separated values for multiple Hostname entries) [Enter valid Fully Qualified Domain Name(FQDN), For Example : example.domain.com] : testvcsa.testdev.lab Enter proper value for VMCA 'Name' :testvcsa.testdev.lab You are going to regenerate Root Certificate and all other certificates using VMCA Continue operation : Option[Y/N] ? : Y
わかりにくいので下記に記載しました。注意点としては、「Hostname」と「VMCA ‘Name’」には、vcsaのFQDNを入力してください。ショートネームやIPアドレスは不可です。
「Continue operation : Option[Y/N] ? : Y」の実行後、下記のように処理が実施されるので待ちます。
「Status : 100% Completed [All tasks completed successfully]」で処理が完了します。サービスの再起動も行ってくれました。(vcsaの再起動がかかってるっぽい)
検証環境では30分弱ほどかかりました。非力な環境でしていますが、本番環境でも10分以上はかかりそうですので気長に待ちましょう。
先ほどFQNDで記載した「Hostname」と「VMCA ‘Name’」は、PNIDとマッチする必要があるものです。PNIDは、下記のコマンドで確認できました。
PNIDとホスト名があっていることを確認しておきましょう。
/usr/lib/vmware-vmafd/bin/vmafd-cli get-pnid --server-name localhost
証明書再作成後の確認
ログイン確認
ログインが行えるようになりました。証明書のステータスについては後述。
証明書確認(vSphere Clientから)
再生成で置き換えられたことがわかります。検証のため現在は未来時間2023年8月16日となっていますので、マシンSSL証明書は2年後の2025年8月になっています。
比較までに下記が検証している2021年8月10日時点の証明書の状態です。
証明書確認(vcsaコマンドラインから)
vcsaへログインして、shellモードで下記コマンドを実行します。
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
再生成で置き換えられたことがわかります。検証のため現在は未来時間2023年8月16日となっていますので、マシンSSL証明書とwcpは2年後の2025年8月になっています。
ここで誤算なのがもともと2031年まで有効なvpxdなどが再作成により2年の短い証明書で置き換えられています。これはよろしくない・・・・。
比較までに下記が検証している2021年8月10日時点の証明書の状態です。
その他問題
証明書エラーが消えない(未解決)
証明書エラーが消えません。「緑にリセット」で手動で消してもvCenterを再起動すると表示されます。
証明書の置き換えの際に、VECS(VMware Endpoint 証明書ストア)にBACKUP_STOREが作成されバックアップ用の領域に期限切れの証明書があるためと思い・・・・
下記のコマンドを実行して、BACKUP_STOREから期限切れの証明書を削除しました。
コマンドの詳細は下記KBをご確認ください。
/usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias <Alias Name> -y
削除後に、vcsaを再起動しましたが再度表示されました。
はい。もうお手上げです。原因わかりませんでした。
vCLSが動かない(未解決)
Retreatモードを有効にしてもvCLSがデプロイされませんでした。
新しいクラスタを作成してもvCLSが作成されずvcsaを再起動したところ、既存クラスタ・新クラスタで下記のメッセージが表示されました。
詳細をクリックすると下記KBが表示されます。
が、2021年8月時点では明確に当てはまるものはなく原因不明です。
root@testvcsa [ /var/log/vmware/wcp ]# tail wcpsvc.log 2023-08-16T03:33:06.022Z info wcp [eamagency/util.go:227] [opID=vCLS] Returning the list of clusters: [ClusterComputeResource:domain-c8] 2023-08-16T03:33:06.051Z error wcp [clustersvc/monitor.go:215] [opID=vCLS] Failed to get EAM agencies: ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:06.051Z error wcp [clustersvc/monitor.go:113] [opID=vCLS] Unable to collect information for cluster agencies: ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:06.051Z error wcp [clustersvc/monitor.go:94] [opID=vCLS] EAM monitor encountered error: ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:06.466Z error wcp [eamlib/lister.go:86] [opID=EAMAgent] Failed to get EAM agencies. Err ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:06.466Z error wcp [informer/informer.go:129] [opID=EAMAgent] Failed to list EAMAgent. Err ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:16.492Z error wcp [eamlib/lister.go:86] [opID=EAMAgent] Failed to get EAM agencies. Err ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:16.492Z error wcp [informer/informer.go:129] [opID=EAMAgent] Failed to list EAMAgent. Err ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:26.517Z error wcp [eamlib/lister.go:86] [opID=EAMAgent] Failed to get EAM agencies. Err ServerFaultCode: EAM is still loading from database. Please try again later. 2023-08-16T03:33:26.517Z error wcp [informer/informer.go:129] [opID=EAMAgent] Failed to list EAMAgent. Err ServerFaultCode: EAM is still loading from database. Please try again later.
参考
まとめ
色々と不可解な結果です・・・・。
STS署名証明書以外はすべて置き換える形になるため、vSphereと連携するコンポーネント(バックアップ、VDI関連など)すべてで何かしら対処が必要になるので、結構シビアな手法になりそうです。