vCenter ServerにはSecurity Token Service (STS)と呼ばれる、vCenter Single Sign-Onによる認証を行う際に、セキュリティ トークンの発行、検証、更新を行う サービスとなる。
このサービスは「STS証明書」と呼ばれる証明書を持っているが、vSphere 7.0以降では有効期限が2年間と短くなっている (以前のバージョンのSTS証明書の有効期限は10年)。これはセキュリティの観点から意図的に短くされており、有効期限切れの前に、手動による更新作業が必要となる。なお、更新した場合のSTS証明書の有効期限は同じく2年となる。
本記事では、vCenter ServerのSTS証明書を手動で更新する手順を記載する。
環境
今回はvSphere 7.0 Update 1の環境で確認を行った。vSphere 7.0となるため、vCenter Server Applianceに関する手順となる。もし、vSphere 6.7以前のWindows版のvCenter Serverの場合は本記事の手順では対応できないため注意すること。
- vCenter Server 7.0 Update 1d
- ESXi 7.0 Update 1
STS証明書更新手順
1. STS証明書の確認・更新用スクリプトの入手
STS証明書の更新はvCenter ServerにSSHでログインし、CLIによる更新作業を行う。
ある程度簡略化できるよう、証明書の更新期限の確認と更新をするためのスクリプトがVMwareから入手できるため、それを利用する。
checksts.py
証明書の確認用スクリプトであるchecksts.py
は、以下KBの「Attachments」から入手する。
fixsts.sh
証明書の更新用スクリプトであるfixsts.sh
は、以下KBの「Attachments」から入手する。
2. 入手したスクリプトをvCenter Serverに配置
入手したスクリプトをvCSAに対して配置する。
vCenter ServerにSSHログインすると、以下のようなプロンプトが表示される。通常のLinuxと同様のコマンド実行が必要となるため、shell
を実行する。
Connected to service
* List APIs: "help api list"
* List Plugins: "help pi list"
* Launch BASH: "shell"
Command> shell
Shell access is granted to root
root@vcsa [ ~ ]#
vCenter ServerはSSHによる接続はできるものの、scp
やsftp
による接続が簡単にはできないようなので、vi
を開きターミナルソフトから、スクリプトのテキストをすべてコピー&ペーストしてしまう方法が手っ取り早い。
今回は/tmp
にスクリプトを配置する。
3. STS証明書の期限を確認
checksts.py
を実行し、証明書の期限を確認する。構築後1週間ほど経過しているため、722 days (2 years)
と、2年 (730日) より少し少なくなっている。
# cd /tmp/
# ./checksts.py
2 VALID CERTS
================
LEAF CERTS:
[] Certificate AD:5B:3A:72:4A:AB:75:E5:57:64:47:04:A2:FC:91:5D:E5:D9:76:44 will expire in 722 days (2 years).
ROOT CERTS:
[] Certificate B3:07:5B:30:81:0A:C1:85:AD:1B:E9:F1:88:8D:34:3C:00:B1:C0:C7 will expire in 3638 days (10 years).
0 EXPIRED CERTS
================
LEAF CERTS:
None
ROOT CERTS:
None
4. STS証明書を更新
./fixsts.sh
を実行し、STS証明書を更新する。途中、administrator@vsphere.localのパスワードが求められるが、処理自体はすぐに完了する。
# cd /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 vcsa.intrat.local started on Fri Aug 6 22:29:13 UTC 2021
Detected DN: cn=vcsa.intrat.local,ou=Domain Controllers,dc=vsphere,dc=local
Detected PNID: vcsa.intrat.local
Detected PSC: vcsa.intrat.local
Detected SSO domain name: vsphere.local
Detected Machine ID: a5fa8cc6-bbe5-4a00-8ac2-71a4c56097d8
Detected IP Address: 192.168.11.160
Domain CN: dc=vsphere,dc=local
==================================
==================================
Detected Root's certificate expiration date: 2031 Jul 23
Detected today's date: 2021 Aug 6
==================================
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 1 to /tmp/vmware-fixsts
Deleting tenant 1
Amount of trustedcertchains: 1
Exporting trustedcertchain 1 to /tmp/vmware-fixsts
Deleting trustedcertchain 1
Applying newly generated STS certificate to SSO domain
adding new entry "cn=TenantCredential-1,cn=vsphere.local,cn=Tenants,cn=IdentityManager,cn=Services,dc=vsphere,dc=local"
adding new entry "cn=TrustedCertChain-1,cn=TrustedCertificateChains,cn=vsphere.local,cn=Tenants,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
==================================
==================================
5. STS証明書の期限が更新されていることを確認
再度、checksts.py
を使って証明書の期限を確認する。730 days (2 years)
となっており期限が更新されていることがわかる。
# cd /tmp/
# ./checksts.py
2 VALID CERTS
================
LEAF CERTS:
[] Certificate 4C:CE:BF:F2:CC:17:2E:71:5B:0C:74:E1:AB:88:EC:88:11:66:9C:79 will expire in 730 days (2 years).
ROOT CERTS:
[] Certificate B3:07:5B:30:81:0A:C1:85:AD:1B:E9:F1:88:8D:34:3C:00:B1:C0:C7 will expire in 3638 days (10 years).
0 EXPIRED CERTS
================
LEAF CERTS:
None
ROOT CERTS:
None
6. vCenter Serverのサービスを再起動
証明書反映のため、vCenter Serverのサービス再起動を行う。再起動はservice-control
コマンドを利用する。環境にもよるが、10~15分程要するので気長に待とう。
# service-control --stop --all && service-control --start --all
Operation not cancellable. Please wait for it to finish...
Performing stop operation on service observability...
Successfully stopped service observability
Performing stop operation on service vmware-pod...
Successfully stopped service vmware-pod
~(中略)~
Performing start operation on service vmware-pod...
Successfully started service vmware-pod
vCenter Server連携製品との再連携の実施
証明書が更新されたことにより、vCenter Server連携製品に対して、登録情報を更新及び再登録が必要となる。
vCenter Server連携製品とは、例えばVASAを利用するストレージ製品や、vROpsやSRMなどのVMware関連製品となる。今回はSRMを例に更新手順を記載する。
1. SRMのアプライアンス管理画面にログイン
vSphere Clientにログインし、SRMの接続状況を確認すると以下のように「Site Recovery Manager - ユーザー インターフェイス エラー: PSC サービスに接続できません」のエラーとなっている。
同じ画面の「構成」を選択し、SRMアプライアンスの管理画面にadminユーザでログインする。通常、SRMは保護サイトとリカバリサイトで2つ存在するので、移行は両方に対して処理が必要となる。
2. vCenter Serverの登録情報を更新
「再構成」を選択すると、vCenter Serverの登録ウィザードが表示される。最初にadministrator@vsphere.localとパスワードを入力した後はひたすら「次へ」を選択するだけで、vCenter Serverの再登録が実行される。
再登録後、再度vCenter ServerにてSRMの接続状況を確認すると以下のようにエラーが解消されているはずだ。
以上で、vCenter ServerのSTS証明書の更新作業は完了となる。
0 件のコメント:
コメントを投稿