IDEAL's Voice

株式会社イデアルの社員がやってみた技術的な内容を投稿しています。

vCenterのSTS証明書有効期限の更新

はじめに

イデアルの川上です。
今回はvCenterのSecurity Token Service(以降STSと表記)証明書有効期限更新に関する情報を記載していきます。
STSの詳細についてはVMware製品ドキュメントを参照ください。

docs.vmware.com

vCenter 6.5U2 以降のSTS証明書有効期限について

vCenter 6.5U2 以降を使用している場合、vCenterのSTS証明書有効期限は2年間となっています。
よって、vCenter 6.5U2 以降で2年以上運用する環境においては、2年単位でSTS証明書を更新していく必要があります。 STS証明書の有効期限については、VMwareさんのGS Japan Newsletter 2022年5月号でもお知らせされています。

www.vmware.com

重要情報のお知らせ
STS 証明書有効期限に関するお知らせ
2018 年 5 月リリースの vCenter 6.5 U2 以降、STS 証明書の有効期限が 2 年となっています。有効期限が切れると vCenter にログインできない問題が発生する可能性がありますので、期限の確認や証明書置き換えの際にはこちらの KB を是非ご参照ください。
- Checking Expiration of STS Certificate on vCenter Servers (79248)
- "Signing certificate is not valid" - Regenerating and replacing expired STS certificate using shell script on vCenter Server Appliance 6.5/6.7 (76719)
- "Signing certificate is not valid" - Regenerating and replacing expired STS certificate using PowerShell script on vCenter Server 6.5/6.7 installed on Windows (79263)

有効期限が切れた場合の事象について

有効期限が切れると、GS Japan Newsletter 2022年5月号内の説明にもあるとおり、vCenterにログインできなくなります。
www.vmware.com 具体的には、VCSA 6.5.x/6.7.x 及び vCenter Server 7.0.x の「署名証明書が有効ではありません (Signing certificate is not valid)」エラー (76719) の [Symptoms] に記載のあるような事象が発生します。 kb.vmware.com

・Web Client にログインすると、次のエラーが発生する。
https://kb.vmware.com/servlet/rtaImage?eid=ka05G0000016fvY&feoid=00Nf400000Tyi5N&refid=0EM5G000005Vq2b
・WebClient がアクセス可能で、ログインしようとすると、以下のようなエラ〜メッセージ "User name and password are required" が表示される。 https://kb.vmware.com/servlet/rtaImage?eid=ka05G0000016fvY&feoid=00Nf400000Tyi5N&refid=0EMf4000003wyaS

有効期限切れ前のアラーム表示について

2年サイクルの作業なので忘れてしまいがちですが・・・
有効期限が近くなるとCertificateStatusAlarm - 「期限が切れているか、期限切れが近い証明書があります」/証明書のステータス変更アラームが VMware vCenter Server でトリガされる (68171)にあるとおり、vCenterにアラームが表示されます。

kb.vmware.com

アラーム表示はvCenter Server で STS 証明書の有効期限を確認する (79248) の [Resolution] にあるとおり90日前から表示されます。

kb.vmware.com

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

このアラーム表示をきっかけにSTS証明書有効期限の更新を実施します。

参考:STS証明書有効期限の更新手順について

参考として当方の環境 vCenter 6.5 U3で実施した更新手順を記載します。

前提

  • 以下に記載している手順は、有効期限切れ前の状態でvCenterにログイン可能であることを前提としています。
  • 以下に記載している手順は、vCenter(vCSA)とESXiで構成している環境を対象としています。vSphere ReplicationやvSphere Operation Manager 等の製品を利用している場合は、製品ごとのvCenterの再登録(再連携)手順が必要になります。
  • 大規模環境などでvCenterで可用性向上のためにvCenterをvCHAによりクラスタ構成(複数台構成に)している場合には、vCHAを解体(シングル構成に)する必要があります。 vCHAについてはFAQ:vCenter の高可用性 (2148003)を参照ください。 kb.vmware.com

事前準備

checksts.py と fixsts.sh のダウンロード

checksts.py と fixsts.sh を vCenter へアップロード

WinSCPを使用してvCenterにファイルをアップロードする場合の手順です。

checksts.py の事前実行(STS証明書有効期限の確認)

(中略)

2 VALID CERTS
================

    LEAF CERTS:

    [] Certificate XX:XX:XX:(省略):XX:XX will expire in 33 days (0.0 years).

(中略)

fixsts.sh の実行

  • VCSA 6.5.x/6.7.x 及び vCenter Server 7.0.x の「署名証明書が有効ではありません (Signing certificate is not valid)」エラー (76719) の [Resolution] に記載されている手順 [1.] から [4.] までを実行します。
    kb.vmware.com

  • fixsts.sh を実行時間はおおよそ1分でした。環境によって変動するものと思われます。

  • fixsts.sh を実行すると [Enter password for ~] でパスワード入力を求められます。
    ここで入力するパスワードはvCenter Single Sign-Onドメインの管理者(デフォルトは administrator@vsphere.local)のパスワードです。

  • 上記のパスワード入力に誤りがあっても fixsts.sh は最後まで実行されます。
    そのため、パスワード入力直後に [Amount of tenant credentials: 1] の出力を確認します。
    この出力があった場合は、入力されたパスワードが合っています。
    この出力ではなく [ldap_bind: invalid credentials(49)] の出力があった場合は、入力されたパスワードが間違っています。
    [ldap_bind: invalid credentials(49)] の出力の場合、証明書が正しく更新されていないため、再度 fixsts.sh を実行して正しいパスワードを入力後、[Amount of tenant credentials: 1] の出力を確認します。

(中略)
Exporting and generating STS certificate

Status : Success
Using config file : /tmp/vmware-fixsts/certool.cfg
Status : Success


Enter password for administrator@vsphere.local: ←SSO管理者のパスワードを入力して応答
Amount of tenant credentials: 1 ←パスワード入力直後の出力内容を確認
(中略)

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
==================================
==================================

checksts.py の事後実行(STS証明書有効期限の確認)

2 VALID CERTS
================

    LEAF CERTS:

    [] Certificate XX:XX:XX:(省略):XX:XX will expire in 730 days (2.0 years).

vCenterの再起動

vCenter Server の再起動またはシャットダウン の記載に従い、vCenterの管理インターフェース(VAMI)からvCenterを再起動します。
docs.vmware.com

Certificate Manager の実行

パラメータ 内容 既定値
username SSO管理者のユーザ名を入力して応答 -
password SSO管理者のパスワードを入力して応答 -
Country 既定値のままEnterキーで応答 US
Name 既定値のままEnterキーで応答 CA
Organization 既定値のままEnterキーで応答 VMware
OrgUnit 既定値のままEnterキーで応答 VMware Engineering
State 既定値のままEnterキーで応答 California
Locality 既定値のままEnterキーで応答 Palo Alto
IPAddress vCenter ServerのIPアドレスを入力して応答 -
Email 既定値のままEnterキーで応答 email@acme.com
Hostname vCenter ServerのFQDN名を入力して応答 -
VMCA Name vCenter ServerのFQDN名を入力して応答 -
Continue operation: [Y]を入力して応答 -
  • [Status : 100% Completed [All tasks completed successfully]] の出力を確認する。
    実行完了までおおよそ10分かかりました。

さいごに

STS証明書有効期限切れが起きるとvSphere Web Client や vSphere Client にログオンできなくなります。 2年サイクルという長期サイクルのため見落としがちですが、アラーム監視をきちんと行って安定運用していきたいですね。