この問題は、vCenter Server 6.0 Update 1b で解決されてお
注:
- 該当するシステムに vCenter Server 6.0 Update 1b をインストールしても、もう一度証明書を置き換えるまで、問題は解決しません。
- この Update で解決されるのは、Certificate Manager ユーティリティを使用した証明書の置き換えの問題です。この Update で、Services Controller UI からの証明書の置き換えの問題は解決されません。
Platform Services Controller ユーザー インターフェイスを使用して証明書を置き換える場合にこの問題を解決するには、Platform Services Controller で ls_update_certs.py スクリプトを実行します。スクリプトを実行するときは、古い証明書と新しい証明書を渡します。
注:
- 常に Platform Services Controller でこのスクリプトを実行してください。
- スクリプトを実行するには、古い vCenter Server 証明書のサムプリントと新しい証明書が必要です。これらのファイルは、スクリプトを実行する前に Platform Services Controller にアップロードする必要があります。
- スクリプトを実行する前に既存の証明書を必ずバックアップしてください。
- 証明書を置き換えるたびにこのスクリプトを実行してください。
このプロセスにはいくつかのタスクが含まれます。
タスク 0:組み込み PSC を持つ vCenter Server の sslTrust アンカーを検証する
組み込み PSC を持つ vCenter Server Appliance のコマンド ラインから sslTrust アンカーを検証する
- SSH またはコンソールを使用して、外部 Platform Services Controller アプライアンスにログインします。
- 次のコマンドを実行して、Bash シェルへのアクセスを有効にします。
shell.set --enabled true
- 「shell」と入力し Enter を押します。
- 次のコマンドを実行して、Platform Services Controller のために格納された現在の sslTrust アンカーを取得します。
/usr/lib/vmidentity/tools/scripts/lstool.py list --url https://localhost/lookupservice/sdk --no-check-cert --ep-type com.vmware.cis.cs.identity.sso 2>/dev/null
例:
注:読みやすさを考慮して、SSL トラストは一部省略しています。
Service Product: com.vmware.cis
Service Type: cs.identity
Service ID:04608398-xxxx-xxxx-xxxx-b35961bf5141
Site ID: vmware
Owner ID: [email protected]
Version:2.0
Endpoints:
Type: com.vmware.cis.cs.identity.sso
Protocol: wsTrust
URL: https://psc.vmware.local/sts/STSService/vsphere.local
SSL trust: MIIDWDCCAkCgAwIBAgIJANr+++MJ5+WxMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV ...LqSKWg/apP1XlBV1VyC5LPZrH/rrq8+Naoj7i/P6HAzTwAAL+O10ggClaP8=
- 次のコマンドを実行して、Platform Services Controller のポート 443 で使用される現在の SSL 証明書を取得します。
echo | openssl s_client -connect localhost:443
例:
注:読みやすさを考慮して、証明書は一部省略しています。
CONNECTED(00000003)
depth=3 /DC=xxxxxxxx/DC=xxxxxx/CN=xxxxxxxx-xxx-CA-1
verify return:1
depth=2 /DC=xxxxxxxx/DC=xxxxxx/CN=xxxxxxxx-xxx-CA-1
verify return:1
depth=1 /C=US/DC=xxxxxxxx/DC=xxxxxx/O=psc.xxxxxx.xxx/CN=CA
verify return:1
depth=0 /CN=psc.xxxxxx.xxx/C=US
verify return:1
---
Certificate chain
0 s:/CN=psc.xxxxxx.xxx/C=US
i:/C=US/DC=xxxxxxxx/DC=xxxxxx/O=psc.xxxxxx.xxx/CN=CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDWDCCAkCgAwIBAgIJANr+++MJ5+WxMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV
...
LqSKWg/apP1XlBV1VyC5LPZrH/rrq8+Naoj7i/P6HAzTwAAL+O10ggClaP8=
-----END CERTIFICATE-----
- vSphere ドメインに複数の PSC がある場合は、残りの PSC ノードに対して FQDN を使用して次のコマンドを繰り返します。
echo | openssl s_client -connect psc2.vmware.local:443
- openssl s_client と lstool.py の出力を使用して、返される SSL 証明書が組み込み Platform Services Controller を持つお使いの vCenter Server と一致しているかどうかを確認します。一致する場合は、以降の手順を実行する必要はありません。一致しない場合は、「タスク 1: 管理対象オブジェクト ブラウザ (MOB) から古い証明書を取得する」に進んで sslTrust アンカーの更新を開始します。
組み込み PSC インストールを持つ Windows vCenter Server のコマンド ラインから sslTrust アンカーを検証する
- リモート デスクトップ セッションを使用して、外部 Platform Services Controller に接続します。
- 管理コマンド プロンプトを開きます。
- 次のコマンドを実行して、Platform Services Controller のために格納された現在の sslTrust アンカーを取得します。
"%VMWARE_PYTHON_BIN%" "%VMWARE_CIS_HOME%\VMware Identity Services\lstool\scripts\lstool.py" list --url https://localhost/lookupservice/sdk --no-check-cert --ep-type com.vmware.cis.cs.identity.sso 2> NULL
例:
注:読みやすさを考慮して、SSL トラストは一部省略しています。
Service Product: com.vmware.cis
Service Type: cs.identity
Service ID: 04608398-xxxx-xxxx-xxxx-b35961bf5141
Site ID: vmware
Owner ID: [email protected]
Version: 2.0
Endpoints:
Type: com.vmware.cis.cs.identity.sso
Protocol: wsTrust
URL: https://xxxxxx.coml/sts/STSService/vsphere.local
SSL trust: MIIDWDCCAkCgAwIBAgIJANr+++MJ5+WxMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV ... LqSKWg/apP1XlBV1VyC5LPZrH/rrq8+Naoj7i/P6HAzTwAAL+O10ggClaP8=
- 次のコマンドを実行して、Platform Services Controller のポート 443 で使用される現在の SSL 証明書を取得します。
"%VMWARE_OPENSSL_BIN%" s_client -connect localhost:443
例:
注:読みやすさを考慮して、証明書は一部省略しています。
CONNECTED(00000003)
depth=3 /DC=xxxxxxxx/DC=xxxxxx/CN=xxxxxxxx-xxx-CA-1
verify return:1
depth=2 /DC=xxxxxxxx/DC=xxxxxx/CN=xxxxxxxx-xxx-CA-1
verify return:1
depth=1 /C=US/DC=xxxxxxxx/DC=xxxxxx/O=psc.xxxxxx.xxx/CN=CA
verify return:1
depth=0 /CN=psc.xxxxxx.xxx/C=US
verify return:1
---
Certificate chain
0 s:/CN=psc.xxxxxx.xxx/C=US
i:/C=US/DC=xxxxxxxx/DC=xxxxxx/O=psc.xxxxxx.xxx/CN=CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDWDCCAkCgAwIBAgIJANr+++MJ5+WxMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV
...
LqSKWg/apP1XlBV1VyC5LPZrH/rrq8+Naoj7i/P6HAzTwAAL+O10ggClaP8=
-----END CERTIFICATE-----
- openssl s_client と lstool.py の出力を使用して、出力される SSL 証明書が組み込み Platform Services Controller を持つお使いの vCenter Server と一致しているかどうかを確認します。一致する場合は、以降の手順を実行する必要はありません。一致しない場合は、「タスク 1: 管理対象オブジェクト ブラウザ (MOB) から古い証明書を取得する」に進んで sslTrust アンカーの更新を開始します。
タスク 1:古い証明書を取得する
古い証明書は、Managed Object Browser (MOB) を使用して、またはバックアップ ストアから、取得することができます。バックアップ ストアには、各証明書の置き換え操作後の変更が含まれます。MOB を使用した方が信頼性が向上します。
証明書は、次の手順を実行することにより、ArrayOfLookupServiceRegistrationInfo 管理オブジェクトの sslTrust フィールドで見つけることができます。
- Platform Services Controller で、古い証明書を格納するディレクトリを作成します。この記事では以下の場所を使用します。
Platform Services Controller アプライアンス |
/certificates |
Windows の Platform Services Controller |
C:\certificates\ |
- MOB を開くには、https://vc_with_embedded_psc.example.com/lookupservice/mob?moid=ServiceRegistration&method=List にアクセスします。
- プロンプトが表示されたら、[email protected] のユーザー名とパスワードを使用してログインします。カスタム vCenter Single Sign-On ドメインを使用している場合は、そのユーザー名とパスワードを使用します。
- [filterCriteria] テキスト フィールドで、タグ <filterCriteria></filterCriteria> のみを残し [メソッドの起動] をクリックします。ArrayOfLookupServiceRegistrationInfo オブジェクトが表示されます。
- ぺージで、vc1.example.com を検索 (Ctrl+F) します。
- 対応する sslTrust フィールドの値を検索します。このフィールドの内容は古い証明書の Base64 エンコードされた文字列です。vc1.example.com や Base64 エンコード文字列の発生のいずれも受け入れられます。
次の例をモデルとして使用します(読みやすくするために実際の文字列が大幅に短縮されています)。
sslTrust |
ArrayofString |
MIIDfjCCAmag... |
URL: |
anyURI |
https://vcenter.vmware.local:443/sdk |
- Base64 エンコードされた文字列をファイルにコピーして、ファイルを old_machine.txt として保存します。
- テキスト エディタで old_machine.txt を開きます。
- 文字列の先頭に -----BEGIN CERTIFICATE----- を追加し、文字列の最後に -----END CERTIFICATE----- を追加します。sslTrust フィールドからコピーしたコンテンツの各行の 64 文字目の後に改行を追加します。
例:
-----BEGIN CERTIFICATE-----
LIIDeDCCAmCgAwIBAgIJAP7kGwWSSd0yMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV
...
AVy/R2wjP4rNWDfN9DMCcwfPvw/0nFwrpr+0Cg==
-----END CERTIFICATE-----
- old_machine.txt を old_machine.crt として保存します。
- ファイルを、手順 1 で指定した Platform Services Controller の場所に移動またはアップロードします。
Platform Services Controller アプライアンス |
/certificates/old_machine.crt |
Windows の Platform Services Controller |
C:\certificates\old_machine.crt |
これで、サムプリントをこのファイルから抽出できます。
タスク 2:古い証明書からサムプリントを抽出する
サムプリントは、コマンド ラインから、または証明書ビューア ツールを使用して抽出することができます。証明書を抽出したら、それを Platform Services Controller にアップロードすることができます。
アプライアンスのコマンド ラインからサムプリントを抽出する
- SSH を使用して外部 Platform Services Controller アプライアンスにログインします。
- 次のコマンドを実行して、Bash シェルへのアクセスを有効にします。
shell.set --enabled true
- 「shell 」と入力し、Enter キーを押します。
- 次のコマンドを実行して、サムプリントを取得します。
openssl x509 -in /certificates/old_machine.crt -noout -sha1 -fingerprint
次のような出力が表示されます。
SHA1 Fingerprint=13:1E:60:93:E4:E6:59:31:55:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
等号の後に続く一連の数字と文字がサムプリントです。
Windows インストールのコマンド ラインからサムプリントを抽出する
- 外部 Platform Services Controller にリモート デスクトップ接続します。
- 管理コマンド プロンプトを開きます。
- 次のコマンドを実行して、サムプリントを取得します。
"%VMWARE_OPENSSL_BIN%" x509 -in c:\certificates\old_machine.crt -noout -sha1 -fingerprint
次のような出力が表示されます。
SHA1 Fingerprint=13:1E:60:93:E4:E6:59:31:55:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
等号の後に続く一連の数字と文字がサムプリントです。
証明書ビューア ツールを使用してサムプリントを抽出する
下記の手順を行い、サムプリントを抽出できます。
- 証明書ビューア ツールを使用してファイルを開きます。Windows の Windows 証明書 ビューアでファイルをダブルクリックして開きます。
- SHA1 サムプリント文字列を取得します。Windows 証明書 ビューアで SHA1 サムプリント フィールドを選択します。
- サムプリントの文字列をテキスト エディタにコピーし、スペースをコロンに置き換えます。
注:テキスト エディタによっては、非表示文字が先頭に追加される場合があります。サムプリントの最初の文字と関連するスペースを削除し、文字を貼り付けるのではなく入力します。
タスク 3 に進み、新しい証明書を取得します。
タスク 3:新しい証明書を取得する
新しい証明書をアーカイブしなかった場合は、vecs-cli を使用して取得できます。
vCenter Server Appliance の新しい証明書を取得する
- コンソールまたは SSH セッションを使用して、vCenter Server システムにログインします。
- 次のコマンドを実行して、Bash シェルへのアクセスを有効にします。
shell.set --enabled true
- 「shell」と入力し、Enter キーを押します。
- 次のコマンドを実行して、新しい証明書を表示します。
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store MACHINE_SSL_CERT
- 次のコマンドを使用して、証明書をファイルにエクスポートします。
/usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store MACHINE_SSL_CERT --alias __MACHINE_CERT --output /certificates/new_machine.crt
- WinSCP またはその他の SCP クライアントを使用して、証明書を Platform Services Controller に移動またはアップロードします。
Windows インストールで vCenter Server の新しい証明書を取得する
- vCenter Server システムにリモート デスクトップ接続します。
- 管理コマンド プロンプトを開きます。
- 次のコマンドを実行して、新しい証明書を表示します。
"%VMWARE_CIS_HOME%"\vmafdd\vecs-cli entry list --store MACHINE_SSL_CERT --text |more
- 次のコマンドを使用して、証明書をファイルにエクスポートします。
"%VMWARE_CIS_HOME%"\vmafdd\vecs-cli entry getcert --store MACHINE_SSL_CERT --alias __MACHINE_CERT --output c:\certificates\new_machine.crt
- WinSCP またはその他の SCP クライアントを使用して、証明書を Platform Services Controller に移動またはアップロードします。
タスク 4 に進み、タスク 1 ~ 3 で集めた情報を使用して、スクリプトを実行します。
タスク 4:ls_update_certs.py スクリプトを実行する
vCenter Server 証明書を置き換えてから、Platform Services Controller の ls_update_certs.py スクリプトを実行します。スクリプトの実行を成功させるには、古い vCenter Server 証明書と新しい vCenter Server の証明書の両方のサムプリントが必要です。
警告:このスクリプトのアクションは元に戻すことができません。問題が発生した場合にリカバリを行えるように、仮想マシンのバックアップまたはスナップショットを作成します。
注:Windows システムの場合、パスワードは二重引用符で囲みます。
アプライアンスで ls_update_cert を実行する
ls_update_certs スクリプトは次の場所にあります。 /usr/lib/vmidentity/tools/scripts/ls_update_certs.py.
- コンソールまたは SSH セッションを介して外部 Platform Services Controller アプライアンスにログインします。
- 次のコマンドを実行して、Bash シェルへのアクセスを有効にします。
shell.set --enabled true
- 「shell 」と入力し、Enter キーを押します。
- 次のコマンドを使用して、ディレクトリを /usr/lib/vmidentity/tools/scripts/ に変更します。
cd /usr/lib/vmidentity/tools/scripts/
- 次のコマンドを実行します:
python ls_update_certs.py --url Lookup_Service_FQDN_of_Platform_Services_Controller --fingerprint Old_Certificate_Fingerprint_from_Task_2 --certfile New_Certificate_Path_from_Task_3 --user [email protected] --password 'Password'
例(この例で使用されたフィンガープリントをコピーしない):
python ls_update_certs.py --url https://psc.vmware.com/lookupservice/sdk --fingerprint 13:1E:60:93:E4:E6:59:31:55:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX --certfile /certificates/new_machine.crt --user [email protected] --password 'Password'
Platform Services Controller の Windows インストールで ls_update_cert を実行する
- リモート デスクトップ セッションおよび管理者権限を使用して、外部 Platform Services Controller に接続します。
- 管理コマンド プロンプトを開きます。
- 次のコマンドを実行してディレクトリを C:\Program Files\VMware\vCenter Server\VMware Identity Services\lstool\scripts\ に移動します。
cd C:\Program Files\VMware\vCenter Server\VMware Identity Services\lstool\scripts\
- 次のコマンドを実行します:
"%VMWARE_PYTHON_BIN%" ls_update_certs.py --url Lookup_Service_FQDN_of_Platform_Services_Controller --fingerprint Old_Certificate_Fingerprint_from_Task_2 --certfile New_Certificate_Path_from_Task_3 --user Username --password Password
例(この例で使用されたフィンガープリントをコピーしない):
"%VMWARE_PYTHON_BIN%" ls_update_certs.py --url https://psc.vmware.com/lookupservice/sdk --fingerprint 13:1E:60:93:E4:E6:59:31:55:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX --certfile c:\certificates\new_machine.crt --user [email protected] --password <Password>
追加情報
ls_update_cert の構文
次の構文を使用してスクリプトを実行します。
python ls_update_certs.py --url LS_URL --fingerprint OLD_CERT_SHA1_HASH --certfile NEW_CERT_PEM_FILEPATH --user USER --password PASSWORD
LS_URL |
Lookup Service の URL。外部 Platform Services Controller で、次の URL をモデルとして使用します。 https://external_platform_services_controller_FQDN.example.com/lookupservice/sdk |
OLD_CERT_SHA1_HASH |
タスク 2 で取得した、証明書を置き換える前に vCenter Server または Platform Services Controller が使用していた証明書のサムプリント。 最初に古い証明書を取得します。
次に古い証明書からサムプリントを取り出します。 注:VMware では、ファイルシステム内の古い vCenter Server 証明書を検索することをお勧めしていません。 |
NEW_CERT_PEM_FILEPATH |
タスク 3 で取得した、新しい vCenter Server マシン SSL 証明書の PEM エンコードされたファイル 証明書の置き換えの一部として渡したファイルを使用します。ファイルを持っていない場合は、「新しい証明書を取得する」の処理を行います。 注:ファイルシステムでの新しい vCenter Server 証明書の検索は推奨しません。 |
USER and PASSWORD |
vCenter Single Sign-On の管理者権限を保有するユーザー |
BACKUP_STORE から古い証明書を取得する
vSphere Certificate Manager ユーティリティを使用している場合は、古いマシンの SSL 証明書を VECS 内の BACKUP_STORE から取得できます。
注:バックアップ ストアは、最後の証明書のみ保存します。複数の置換動作を行う場合は、次で説明するように証明書を MOB から取得できます。
vCenter Server Appliance では、古い証明書のサムプリントを次のように取得します。
- 次のコマンドを実行して、Machine_Cert エントリを探し、それが以前の証明書であることを確認します。
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE --text
- Machine_Cert の下の bkp___Machine_Cert に注意してください。
- 次のコマンドを実行して BACKUP_Store から Machine_Cert を出力します。
/usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store BACKUP_STORE --alias bkp___MACHINE_CERT --output /certificates/old_machine.crt
- 次のコマンドを実行して、サムプリントを出力します。
openssl certificate -fingerprint< -sha1 -noout /certificates/old_machine.crt -in x509>
次のような出力が表示されます。
SHA1 Fingerprint=11:41:9F:D8:CF:27:6B:EA:F7:49:20:XX:XX:XX:XX:XX:XX:XX:XX
vCenter Server Windows システムで、古い証明書を次のように取得します。
- 次のコマンドを実行して、Machine_Cert エントリを探し、それが以前の証明書であることを確認します。
"%VMWARE_CIS_HOME%"\vmafdd\vecs-cli entry list --store BACKUP_STORE –text | more
- BACKUP_Store から Machine_Cert を出力するには、次のコマンドを実行します。
"%VMWARE_CIS_HOME%"\vmafdd\vecs-cli entry getcert --store BACKUP_STORE --alias bkp___MACHINE_CERT --output c:\certificates\old_machine.crt
- 次のコマンドを実行して、サムプリントを出力します。
openssl certificate -fingerprint< -sha1 -noout c:\certificates\old_machine.crt -in x509>
次のような出力が表示されます。
SHA1 Fingerprint=11:41:9F:D8:CF:27:6B:EA:F7:49:20:XX:XX:XX:XX:XX:XX:XX:XX