vCenter Server Appliance 版 STS 証明書の有効期限更新
STS証明書とは
Vmware社の公開情報を確認すると STS は、Security Token Service の略称で セキュリティトークンの発行、検証、更新を行う Web サービスと記載されています。
もともとは10年間有効期限が設けられていましたが特定バージョンだけ2年という有効期限になっているようです。
概要
vCenter Server Appliance 版のSTS 証明書有効期限が切れる前に CUI による作業で更新します。
更新後は更新日が起点となり、有効期限は2年となります。
vCenter Server Appliance 版のSTS 証明書有効期限が切れていた場合でもこの手順で更新が可能です。
以下は有効期限が切れてしまった時に対応した記事です、ご参考まで。
環境
vCenter Server Appliance 版(バージョン:6.5.0)
ESXi(バージョン:6.5.0)
事前準備
以下KBをもとに対応しました。
一例に過ぎないのでこの方法でも復旧しない可能性はありますのでご了承ください。
https://kb.vmware.com/s/article/76719?lang=ja
Resolution 項を実施します。
まず、「このナレッジベース記事KBに添付された fixsts.sh スクリプトをダウンロード・・・」と
ありますが残念ながら日本語記事にスクリプトが公開されていません。
次の原文に「Attachments」という項目がありますのでそこのクリップマークからダウンロードします。
https://kb.vmware.com/s/article/76719
対処
VCSAへコマンドベースでログオンします。
VMware vCenter Server Appliance 6.5.0.21000
Type: vCenter Server with an embedded Platform Services Controller
Connected to service
* List APIs: "help api list"
* List Plugins: "help pi list"
* Launch BASH: "shell"
Command>
「shell」を入力し、 Bash シェルへアクセスします。
Command> shell
Shell access is granted to root
root@testsv01 [ ~ ]#
cd コマンドで任意のディレクトリに移動します。
今回は、KBに従い /tmp へ移動します。
fixsts.sh をVCSAへアップロードします。
当方の環境ではSSHでファイル転送ができないので
/tmp 配下へ直接 fixsts.sh を作成し、内容をコピー、貼り付けしました。
作成した fixsts.sh へ実行権限を付与するため、次のコマンドを実行します。
chmod +x fixsts.sh
fixsts.sh を実行します。
実行結果を貼っていますが、KBにもあるように同じような出力があれば大丈夫なようです。
./fixsts.sh
root@testsv01 [ /tmp ]# ./fixsts.sh
NOTE: This works on external and embedded PSCs
This script will do the following
1: Regenerate STS certificate
What is needed?
1: Offline snapshots of VCs/PSCs
2: SSO Admin Password
IMPORTANT: This script should only be run on a single PSC per SSO domain
==================================
Resetting STS certificate for photon-machine started on Mon Jun 29 07:13:45 UTC 2020
Detected DN: cn=testsv01
Detected PNID: testsv01
Detected PSC: testsv01
Detected SSO domain name: vsphere.local
Detected Machine ID: ********-****-****-****-************
Detected IP Address: 192.168.1.1
Domain CN: dc=vsphere,dc=local
==================================
==================================
Detected Root's certificate expiration date: 2028 Jun 20
Detected today's date: 2020 Jun 29
==================================
Exporting and generating STS certificate
Status : Success
Using config file : /tmp/vmware-fixsts/certool.cfg
Status : Success
Enter password for administrator@vsphere.local:
Amount of tenant credentials: 1
Exporting tenant and trustedcertchain 1 to /tmp/vmware-fixsts
Deleting tenant and trustedcertchain 1
Applying newly generated STS certificate to SSO domain
adding new entry "cn=ATenantCredential-1,cn=vsphere.local,cn=ATenants,cn=IdentityManager,cn=Services,dc=vsphere,dc=local"
adding new entry "cn=TrustedCertChain-1,cn=TrustedCertificateChains,cn=vsphere.local,cn=ATenants,cn=IdentityManager,cn=Services,dc=vsphere,dc=local"
Replacement finished - Please restart services on all vCenters and PSCs in your SSO domain
==================================
IMPORTANT: In case you're using HLM (Hybrid Linked Mode) without a gateway, you would need to re-sync the certs from Cloud to On-Prem after following this procedure
==================================
==================================
root@photon-machine [ /tmp ]#
SSOドメイン内すべての vCenter Server または PSC でサービスを再起動します、とありますがどのサービスが特定できないのでVCSA自体を再起動します。
※PSCとは
Vmware Platform Services Controller の略称でvSphere でID管理、証明書管理、ライセンス管理などのサービスをサポートします。
VCSAに同梱されているのか別で存在するのか理解できておりません。
当方の環境では同梱されているような状態でしたのでVCSA自体の再起動のみ実施しています。
KBの続き 項番6 に Certificate Manager を使用し、有効期限が切れているその他の証明書をHow to use vSphere Certificate Manager to Replace SSL Certificates の記事に従って置き換えますとあります。
まずは、その他の証明書の有効期限が切れていないか KBにある for文 を実行します。
for文をコピー、貼り付け、Enter で結果が返ります。結果を見るとほとんど有効期限が切れてることがわかります。
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
▼for文実行結果(表示の都合上、一部改行しています)
root@testsv01 [ ~ ]# 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 2 02:48:06 2020 GMT
STORE TRUSTED_ROOTS
Alias : **********a5bd3f74f8a840ac**********48a3
Not After : Jul 27 14:48:06 2028 GMT
STORE TRUSTED_ROOT_CRLS
Alias : **********530bc3a1ed04be25**********1a91
STORE machine
Alias : machine
Not After : Aug 1 14:39:03 2020 GMT
STORE vsphere-webclient
Alias : vsphere-webclient
Not After : Aug 1 14:39:04 2020 GMT
STORE vpxd
Alias : vpxd
Not After : Aug 1 14:39:04 2020 GMT
STORE vpxd-extension
Alias : vpxd-extension
Not After : Aug 1 14:39:05 2020 GMT
STORE SMS
Alias : sms_self_signed
Not After : Aug 2 14:53:48 2028 GMT
root@testsv01 [ ~ ]#
次は、KBの 項番6 にあるリンクの記事からその他の証明書の有効期限を更新します。
How to use vSphere Certificate Manager to Replace SSL Certificates の記事
https://kb.vmware.com/s/article/2097936?lang=ja
VCSAへコマンドベースでログオンします。
VMware vCenter Server Appliance 6.5.0.21000
Type: vCenter Server with an embedded Platform Services Controller
Connected to service
* List APIs: "help api list"
* List Plugins: "help pi list"
* Launch BASH: "shell"
Command>
「shell」を入力し、 Bash シェルへアクセスします。
Command> shell
Shell access is granted to root
root@testsv01 [ ~ ]#
今回は、certificate-manager を起動してオプション 4 で対応します。
※オプションの使い方はわかっておりません・・・
以下実行履歴です。
実際に入力した値を★印で記載しています。それぞれの環境に合わせて入力してください。
最後の「Status : 100% Completed」となるまで当方の環境では10分ほどかかりました。焦らず待ちましょう。
▼オプション4の実行結果(表示の都合上、一部改行しています)
root@photon-machine [ ~ ]# /usr/lib/vmware-vmca/bin/certificate-manager
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
| |
| *** Welcome to the vSphere 6.5 Certificate Manager *** |
| |
| -- Select Operation -- |
| |
| 1. Replace Machine SSL certificate with Custom Certificate |
| |
| 2. Replace VMCA Root certificate with Custom Signing |
| Certificate and replace all Certificates |
| |
| 3. Replace Machine SSL certificate with VMCA Certificate |
| |
| 4. Regenerate a new VMCA Root Certificate and |
| replace all certificates |
| |
| 5. Replace Solution user certificates with |
| Custom Certificate |
| |
| 6. Replace Solution user certificates with VMCA certificates |
| |
| 7. Revert last performed operation by re-publishing old |
| certificates |
| |
| 8. Reset all Certificates |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
Note : Use Ctrl-D to exit.
Option[1 to 8]: 4 ★4 を入力し、Enter
Option[1 to 8]: 4 ★4を入力しEnter
Do you wish to generate all certificates using configuration file : Option[Y/N] ? : Y ★Yを入力しEnter
Please provide valid SSO and VC priviledged user credential to perform certificate operations.
Enter username [Administrator@vsphere.local]:★何も入力せずEnter
Enter password:★パスワードを入力
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
Enter proper value for 'Name' [Default value : CA] :★何も入力せずEnter
Enter proper value for 'Organization' [Default value : VMware] :★何も入力せずEnter
Enter proper value for 'OrgUnit' [Default value : VMware Engineering] :★何も入力せずEnter
Enter proper value for 'State' [Default value : California] :★何も入力せずEnter
Enter proper value for 'Locality' [Default value : Palo Alto] :★何も入力せずEnter
Enter proper value for 'IPAddress' (Provide comma separated values for multiple IP addresses) [optional] : 192.168.1.1 ★IPアドレスを入力しEnter
Enter proper value for 'Email' [Default value : email@acme.com] :★何も入力せずEnter
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] : testsv01 ★FQDN を入力しEnterr
Enter proper value for VMCA 'Name' :testsv01 ★hostnameコマンド結果 を入力しEnter
You are going to regenerate Root Certificate and all other certificates using VMCA
Continue operation : Option[Y/N] ? : Y ★Yを入力しEnter
Get site nameCompleted [Replacing Machine SSL Cert...]
default-site
Lookup all services
Get service default-site:********-****-****-****-d67abe8f05ce
Update service default-site:********-****-****-****-d67abe8f05ce; spec: /tmp/svcspec_bVcxjS
Get service default-site:********-****-****-****-d1819f3912c5
Update service default-site:********-****-****-****-d1819f3912c5; spec: /tmp/svcspec_tVrx_g
Get service default-site:********-****-****-****-0652dc219d02
Update service default-site:********-****-****-****-0652dc219d02; spec: /tmp/svcspec_cipnlB
Get service ********-****-****-****-1f9dc08b291d
Update service ********-****-****-****-1f9dc08b291d; spec: /tmp/svcspec_quWsLL
Get service ********-****-****-****-cd6e9604050d
Update service ********-****-****-****-cd6e9604050d; spec: /tmp/svcspec_iDDUg5
~ 中略 ~
Updated 29 service(s)
Status : 100% Completed [All tasks completed successfully]
root@testsv01
vCenter Server Appliance のその他の有効期限切れの証明書が延長されていることをを確認します。結果の前半に反映されています。
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
▼for文の実行結果(表示の都合上、一部改行しています)
root@testsv01 [ ~ ]# 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 : Jul 29 01:13:20 2022 GMT
STORE TRUSTED_ROOTS
Alias : 6abe646d70a5bd3f74f8a840ac7e3a03e02948a3
Not After : Jul 28 14:48:06 2028 GMT
Alias : 42eac90a947a7d9e9abd1e9e00c966b4b8c76c71
Not After : Jul 24 01:23:19 2030 GMT
STORE TRUSTED_ROOT_CRLS
Alias : 143edca49c530bc3a1ed04be2598862732e11a91
Alias : db169fde783d71c797780473526070fd9f4c164a
STORE machine
Alias : machine
Not After : Jul 29 01:14:37 2022 GMT
STORE vsphere-webclient
Alias : vsphere-webclient
Not After : Jul 29 01:14:38 2022 GMT
STORE vpxd
Alias : vpxd
Not After : Jul 29 01:14:38 2022 GMT
STORE vpxd-extension
Alias : vpxd-extension
Not After : Jul 29 01:14:38 2022 GMT
STORE SMS
Alias : sms_self_signed
Not After : Aug 3 14:53:48 2028 GMT
STORE BACKUP_STORE
Alias : bkp___MACHINE_CERT
Not After : Aug 2 02:48:06 2020 GMT
Alias : bkp_machine
Not After : Aug 1 14:39:03 2020 GMT
Alias : bkp_vsphere-webclient
Not After : Aug 1 14:39:04 2020 GMT
Alias : bkp_vpxd
Not After : Aug 1 14:39:04 2020 GMT
Alias : bkp_vpxd-extension
Not After : Aug 1 14:39:05 2020 GMT
root@testsv01 [ ~ ]#
vSphere Web Client へ接続するパソコンのルート証明書をインストールします。環境にもよりますが当方の場合、実施しないと証明書エラーが表示されたり、うまく表示されない場合がありました。以下を参考にルート証明書をインストールしてください。
ブラウザのキャッシュをクリアし、ブラウザを再起動します。
証明書の期間が延長され、証明書エラーが出てなければ成功です!
お疲れ様でした。
Vmware Remote Console を利用している方は、初回起動時に証明書更新メッセージが出ると思いますのでそのまま更新してください。