はじめに
イデアルの川上です。
今回はvCenterのSecurity Token Service(以降STSと表記)証明書有効期限更新に関する情報を記載していきます。
STSの詳細についてはVMware製品ドキュメントを参照ください。
vCenter 6.5U2 以降のSTS証明書有効期限について
vCenter 6.5U2 以降を使用している場合、vCenterのSTS証明書有効期限は2年間となっています。
よって、vCenter 6.5U2 以降で2年以上運用する環境においては、2年単位でSTS証明書を更新していく必要があります。
STS証明書の有効期限については、VMwareさんのGS Japan Newsletter 2022年5月号でもお知らせされています。
重要情報のお知らせ
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 にログインすると、次のエラーが発生する。
・WebClient がアクセス可能で、ログインしようとすると、以下のようなエラ〜メッセージ "User name and password are required" が表示される。
有効期限切れ前のアラーム表示について
2年サイクルの作業なので忘れてしまいがちですが・・・
有効期限が近くなるとCertificateStatusAlarm - 「期限が切れているか、期限切れが近い証明書があります」/証明書のステータス変更アラームが VMware vCenter Server でトリガされる (68171)にあるとおり、vCenterにアラームが表示されます。
アラーム表示はvCenter Server で STS 証明書の有効期限を確認する (79248) の [Resolution] にあるとおり90日前から表示されます。
重要: 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 のダウンロードします。
vCenter Server で STS 証明書の有効期限を確認する (79248) の Attachments の [checksts] リンクをクリックして [checksts.py] ファイルをダウンロードします。 kb.vmware.comfixsts.sh のダウンロードします。
VCSA 6.5.x/6.7.x 及び vCenter Server 7.0.x の「署名証明書が有効ではありません (Signing certificate is not valid)」エラー (76719) の Attachments の [fixsts] リンクをクリックして [fixsts.sh] ファイルをダウンロードします。 kb.vmware.com
checksts.py と fixsts.sh を vCenter へアップロード
WinSCPを使用してvCenterにファイルをアップロードする場合の手順です。
vCSAのデフォルトシェルを Appliance Shell から Bash へ変更します。
WinSCP を使用してファイルを vCenter Server Appliance にアップロードするとエラーが発生する (2107727) の [Solution] に記載があるとおり、WinSCPを使用してファイルのアップロードをする場合にはデフォルトシェルを一時的に変更します。 kb.vmware.comchecksts.pyとfixsts.shのアップロードします。
WinSCPでvCenterに接続し、checksts.pyとfixsts.shを任意の場所(/tmp等)にアップロードします。vCSAのデフォルトシェルを Bash から Appliance Shell へ変更します。
WinSCP を使用してファイルを vCenter Server Appliance にアップロードするとエラーが発生する (2107727) の [Solution] に記載があるとおり、デフォルトシェルを Bash から Appliance Shellへ戻します。 kb.vmware.com
checksts.py の事前実行(STS証明書有効期限の確認)
vCenter Server で STS 証明書の有効期限を確認する (79248) の [Resolution] -> [VCSA] に記載されている手順を実行します。
kb.vmware.com出力結果の [2 VALID CERTS] -> [LEAF CERTS:] の [will expire in ] に続く日数が有効期限切れまでの日数となります。
以下の例では、有効期限切れまで残り33日を示しています。
(中略) 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.comfixsts.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証明書有効期限の確認)
vCenter Server で STS 証明書の有効期限を確認する (79248) の [Resolution] -> [VCSA] に記載されている手順を実行します。
kb.vmware.com出力結果の [2 VALID CERTS] -> [LEAF CERTS:] の [will expire in ] に続く日数が [730 days (2.0 years)] に更新されていることを確認します。
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 の実行
SSL 証明書の置き換えのための vSphere Certificate Manager の使い方 (2097936) の [Resolution] に記載されている手順を実行します。 kb.vmware.com
当方の環境ではCertificate Managerの実行オプションは [4] を選択しています。
その後に応答する各パラメータは以下のとおり。
パラメータ | 内容 | 既定値 |
---|---|---|
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アドレスを入力して応答 | - |
既定値のまま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年サイクルという長期サイクルのため見落としがちですが、アラーム監視をきちんと行って安定運用していきたいですね。