VMware Certificate Authority (VMCA) ルート証明書の有効期限が近付いているか、またはその他の理由で証明書を置き換える場合には、CLI を使用して新しいルート証明書を生成し、VMware Directory Service に追加できます。新しいルート証明書を使用すれば、新しいマシン SSL 証明書およびソリューション ユーザー証明書を生成することもできます。

多くの場合、vSphere Certificate Manager ユーティリティを使用して証明書を置き換えます。

詳細な制御が必要な場合には、このシナリオを参照すると、CLI コマンドを使用して証明書のセットをすべて置き換える具体的な手順が詳細に分かります。あるいは、該当するタスクの手順を使用して、個別の証明書のみを置き換えることもできます。

前提条件

administrator@vsphere.local または CAAdmins グループ内の他のユーザーのみが証明書管理タスクを実行できます。vCenter Single Sign-Onグループへのメンバーの追加を参照してください。

CLI を使用した新しい VMCA 署名付きルート証明書の生成

certool CLI を使用して新しい VMCA 署名付き証明書を生成し、証明書を vmdir に発行できます。

手順

  1. vCenter Server で、新しい自己署名証明書およびプライベート キーを生成します。
    certool --genselfcacert --outprivkey <key_file_path> --outcert <cert_file_path> --config <config_file>
  2. 既存のルート証明書を新しい証明書に置き換えます。
    certool --rootca --cert <cert_file_path> --privkey <key_file_path>
    このコマンドは、証明書を生成し、その証明書を vmdir に追加して、VECS に追加します。
  3. すべてのサービスを停止し、証明書の作成、伝達、およびストレージを処理するサービスを開始します。
    service-control --stop --all
    service-control --start vmafdd
    service-control --start vmdird
    service-control --start vmcad
    
  4. (オプション) 新しいルート証明書を vmdir に発行します。
    dir-cli trustedcert publish --cert newRoot.crt
    
    コマンドは、vmdir のインスタンスを即座に更新します。コマンドを実行しない場合、すべてのノードへ新しい証明書を伝達するのに時間がかかる場合があります。
  5. すべてのサービスを再開します。
    service-control --start --all
    

例: 新規の VMCA 署名付きルート証明書の生成

次の例は、現在のルート CA 情報を確認し、ルート証明書を再生成するための手順を示します。
  1. (オプション)vCenter Server で、VMCA ルート証明書を一覧表示し、証明書ストア内に含まれていることを確認します。
    /usr/lib/vmware-vmca/bin/certool --getrootca 
    出力は次のようになります。
    output:
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                cf:2d:ff:49:88:50:e5:af
        ...
    
  2. (オプション)VECS TRUSTED_ROOTS ストアの内容を一覧表示し、そこに表示される証明書のシリアル番号と、手順 1 の出力を比較します。
    /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOTS --text
    
    ルート証明書が 1 つだけの単純なケースでは、出力は次のようになります。
    Number of entries in store :    1
    Alias : 960d43f31eb95211ba3a2487ac840645a02894bd
    Entry type :    Trusted Cert
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                cf:2d:ff:49:88:50:e5:af
  3. 新しい VMCA ルート証明書を生成します。コマンドは、証明書を VECS と vmdir (VMware Directory Service) の TRUSTED_ROOTS ストアに追加します。
    /usr/lib/vmware-vmca/bin/certool --selfca --config=/usr/lib/vmware-vmca/share/config/certool.cfg

CLI を使用したマシン SSL 証明書の VMCA 署名証明書への置き換え

VMCA 署名付きルート証明書を新しく生成したら、vecs-cli コマンドを使用して環境内のすべてのマシン SSL 証明書を置き換えることができます。

他のサービスとの安全な通信を実現するため、各マシンにマシン SSL 証明書が必要です。複数の vCenter Server インスタンスが拡張リンク モード構成で接続されている場合は、各ノードでマシン SSL 証明書生成コマンドを実行する必要があります。

前提条件

すべてのサービスを停止し、証明書の伝達およびストレージを処理するサービスを開始する準備ができている。

手順

  1. 新しい証明書を必要とするマシンごとに、certool.cfg のコピーを 1 つ作成します。
    Certool.cfg ファイルは /usr/lib/vmware-vmca/share/config/ ディレクトリにあります。
  2. マシンの完全修飾ドメイン名 (FQDN) を含めるように、各マシンのカスタム構成ファイルを編集します。
    マシンの IP アドレスに対して NSLookup を実行して、名前の DNS リストを表示し、ファイルのホスト名フィールドでその名前を使用します。
  3. 各ファイルに、パブリック キーとプライベート キーのファイル ペアと証明書を生成し、カスタマイズした構成ファイルに渡します。
    例:
    certool --genkey --privkey=machine1.priv --pubkey=machine1.pub
    certool --gencert --privkey=machine1.priv --cert machine1.crt --Name=Machine1_Cert --config machine1.cfg
  4. すべてのサービスを停止し、証明書の作成、伝達、およびストレージを処理するサービスを開始します。
    service-control --stop --all
    service-control --start vmafdd
    service-control --start vmdird
    service-control --start vmcad
    
  5. 新しい証明書を VECS に追加します。
    SSL を介して通信するには、すべてのマシンのローカル証明書ストアに、新しい証明書が必要です。最初に既存のエントリを削除し、次に新しいエントリを追加します。
    vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT  
    vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert machine1.crt --key machine1.priv
  6. すべてのサービスを再開します。
    service-control --start --all
    

例: VMCA 署名付き証明書によるマシン証明書の置き換え

  1. SSL 証明書用の構成ファイルを作成し、そのファイルを現在のディレクトリに ssl-config.cfg として保存します。
    Country = US
    Name = vmca-<FQDN-example>
    Organization = <my_company>
    OrgUnit = <my_company Engineering>
    State = <my_state> 
    Locality = <mytown>
    Hostname = <FQDN>
  2. マシン SSL 証明書にキー ペアを生成します。拡張リンク モード構成で接続された複数の vCenter Server インスタンスの展開では、このコマンドを vCenter Server ノードごとに実行します。
    /usr/lib/vmware-vmca/bin/certool --genkey --privkey=ssl-key.priv --pubkey=ssl-key.pub
    

    現在のディレクトリに ssl-key.priv および ssl-key.pub ファイルが作成されます。

  3. 新しいマシン SSL 証明書を生成します。この証明書は VMCA によって署名されます。VMCA ルート証明書をカスタム証明書で置き換える場合には、VMCA はすべての証明書に完全な証明書チェーンで署名します。
    /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vmca-ssl.crt --privkey=ssl-key.priv --config=ssl-config.cfg

    現在のディレクトリに new-vmca-ssl.crt ファイルが作成されます。

  4. (オプション)VECS のコンテンツをリスト表示します。
    /usr/lib/vmware-vmafd/bin/vecs-cli store list
    • vCenter Server のサンプル出力:
      output (on vCenter):
      MACHINE_SSL_CERT
      TRUSTED_ROOTS
      TRUSTED_ROOT_CRLS
      machine
      vsphere-webclient
      vpxd
      vpxd-extension
      hvc
      data-encipherment
      APPLMGMT_PASSWORD
      SMS
      wcp
      KMS_ENCRYPTION
  5. VECS 内のマシン SSL 証明書を新しいマシン SSL 証明書で置き換えます。--store--alias の値はデフォルト名と正確に一致させる必要があります。
    • vCenter Server で、次のコマンドを実行して MACHINE_SSL_CERT ストア内のマシン SSL 証明書を更新します。FQDN はマシンごとに異なるため、各マシンの証明書は別々に更新する必要があります。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert new-vmca-ssl.crt --key ssl-key.priv
      

次のタスク

使用している ESXi ホストの証明書を置き換えることもできます。『vSphere のセキュリティ』ドキュメントを参照してください。

CLI を使用した新規 VMCA 署名付き証明書によるソリューション ユーザー証明書の置き換え

マシン SSL 証明書を置き換えたら、dir-cli コマンドを使用して、すべてのソリューション ユーザー証明書を置き換えることができます。ソリューション ユーザー証明書は有効である必要があります。ここでの「有効」とは、有効期限が切れておらず、証明書に含まれるその他の情報が証明書インフラストラクチャで使用されていないことを意味します。

多くの VMware のユーザーの多くがソリューション ユーザー証明書を置き換えていません。マシン SSL 証明書だけがカスタム証明書に置き換えられています。このハイブリッド アプローチによって、セキュリティ チームの要求を満たすことができます。
  • 証明書はプロキシの内側に配置されるか、カスタム証明書が使用されます。
  • 中間 CAは使用されません。

vCenter Server システムのマシン ソリューション ユーザー証明書とソリューション ユーザー証明書を置き換えます。

注: 大規模なデプロイで、ソリューション ユーザー証明書をリストする場合は、 dir-cli list の出力にすべてのノードのソリューション ユーザーが含まれます。 vmafd-cli get-machine-id --server-name localhost を実行して、各ホストのローカル マシン ID を検索します。各ソリューション ユーザーの名前には、マシン ID が含まれています。

前提条件

すべてのサービスを停止し、証明書の伝達およびストレージを処理するサービスを開始する準備ができている。

手順

  1. certool.cfg のコピーを 1 つ作成し、名前、IP アドレス、DNS 名、および E メールのフィールドを削除して、ファイルの名前を sol_usr.cfg のような名前に変更します。
    生成プロセスの一部として、コマンド ラインから証明書に名前を付けることができます。その他の情報は、ソリューション ユーザーには必要ありません。デフォルトの情報を残すと、生成される証明書により混乱が生じる可能性があります。
  2. 各ソリューション ユーザーに、パブリック キーとプライベート キーのファイル ペアと証明書を生成し、カスタマイズした構成ファイルに渡します。
    例:
    certool --genkey --privkey=vpxd.priv --pubkey=vpxd.pub 
    certool --gencert --privkey=vpxd.priv --cert vpxd.crt --Name=VPXD_1 --config sol_usr.cfg
  3. 各ソリューション ユーザーの名前を検索します。
    dir-cli service list 
    
    証明書を置き換えるときに返される一意の ID を使用できます。入力と出力は次にようになります。
    dir-cli service list
    Enter password for administrator@vsphere.local:
    1. machine-623bef28-0311-436e-b21f-6e0d39aa5179
    2. vsphere-webclient-623bef28-0311-436e-b21f-6e0d39aa5179
    3. vpxd-623bef28-0311-436e-b21f-6e0d39aa5179
    4. vpxd-extension-623bef28-0311-436e-b21f-6e0d39aa5179
    5. hvc-623bef28-0311-436e-b21f-6e0d39aa5179
    6. wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e
    拡張リンク モード構成で接続された複数の vCenter Server インスタンスの展開では、 dir-cli service list の出力にはすべてのノードのすべてのソリューション ユーザーが含まれます。 vmafd-cli get-machine-id --server-name localhost を実行して、各ホストのローカル マシン ID を検索します。各ソリューション ユーザーの名前には、マシン ID が含まれています。
  4. すべてのサービスを停止し、証明書の作成、伝達、およびストレージを処理するサービスを開始します。
    service-control --stop --all
    service-control --start vmafdd
    service-control --start vmdird
    service-control --start vmcad
    
  5. 各ソリューション ユーザーの既存の証明書を、vmdir、VECS の順に置き換えます。
    次の例は、vpxd サービスの証明書を置き換える方法を示します。
    dir-cli service update --name <vpxd-xxxx-xxx-7c7b769cd9f4> --cert ./vpxd.crt
    vecs-cli entry delete --store vpxd --alias vpxd
    vecs-cli entry create --store vpxd --alias vpxd --cert vpxd.crt --key vpxd.priv
    
    
    注: vmdir の証明書が置き換えられていないと、ソリューション ユーザーは vCenter Single Sign-On への認証ができません。
  6. すべてのサービスを再開します。
    service-control --start --all
    

例: VMCA 署名付きソリューション ユーザー証明書の使用

  1. 拡張リンク モード構成で、各 vCenter Server ノード上のソリューション ユーザーごとにパブリック キーとプライベート キーのペアを生成します。これには、マシン ソリューション用のペアと、追加のソリューション ユーザー (vpxd、vpxd-extension、vsphere-webclient、wcp) ごとのペアが含まれます。
    1. マシン ソリューション ユーザーにキー ペアを生成します。
      /usr/lib/vmware-vmca/bin/certool --genkey --privkey=machine-key.priv --pubkey=machine-key.pub
      
    2. 各ノードの vpxd ソリューション ユーザーにキー ペアを生成します。
      /usr/lib/vmware-vmca/bin/certool --genkey --privkey=vpxd-key.priv --pubkey=vpxd-key.pub
    3. 各ノードの vpxd-extension ソリューション ユーザーにキー ペアを生成します。
      /usr/lib/vmware-vmca/bin/certool --genkey --privkey=vpxd-extension-key.priv --pubkey=vpxd-extension-key.pub
    4. 各ノードの vsphere-webclient ソリューション ユーザーにキー ペアを生成します。
      /usr/lib/vmware-vmca/bin/certool --genkey --privkey=vsphere-webclient-key.priv --pubkey=vsphere-webclient-key.pub
    5. 各ノードの wcp ソリューション ユーザーにキー ペアを生成します。
      /usr/lib/vmware-vmca/bin/certool --genkey --privkey=wcp-key.priv --pubkey=wcp-key.pub
  2. マシン ソリューション ユーザーと、各 vCenter Server ノードの追加ソリューション ユーザー (vpxd、vpxd-extension、vsphere-webclient、wcp) ごとに、新しい VMCA ルート証明書によって署名されたソリューション ユーザー証明書を生成します。
    注: --Name パラメータは一意である必要があります。ソリューション ユーザー ストアの名前も含めると、ソリューション ユーザーごとにどの証明書を適用するのかが確認しやすくなります。例には、それぞれ vpxdまたは vpxd-extension のような名前が含まれています。
    1. 以下のコマンドを実行し、そのノードのマシン ソリューション ユーザーにソリューション ユーザー証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-machine.crt --privkey=machine-key.priv --Name=machine 
      
    2. 各ノードのマシン ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-machine.crt --privkey=machine-key.priv --Name=machine
    3. 各ノードの vpxd ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vpxd.crt --privkey=vpxd-key.priv --Name=vpxd
      
    4. 各ノードの vpxd-extensions ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vpxd-extension.crt --privkey=vpxd-extension-key.priv --Name=vpxd-extension
    5. 次のコマンドを実行して、各ノードの vsphere-webclient ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vsphere-webclient.crt --privkey=vsphere-webclient-key.priv --Name=vsphere-webclient
    6. 次のコマンドを実行して、各ノードの wcp ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-wcp.crt --privkey=wcp-key.priv --Name=wcp
  3. VECS のソリューション ユーザー証明書を、新しいソリューション ユーザー証明書で置き換えます。
    注: --store--alias パラメータは、サービスのデフォルト名と正確に一致させる必要があります。
    1. 以下のように、各ノードのマシン ソリューション ユーザー証明書を置き換えます。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store machine --alias machine
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store machine --alias machine --cert new-machine.crt --key machine-key.priv
      
    2. 各ノードの vpxd ソリューション ユーザー証明書を置き換えます。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store vpxd --alias vpxd
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store vpxd --alias vpxd --cert new-vpxd.crt --key vpxd-key.priv
      
    3. 各ノードの vpxd-extension ソリューション ユーザー証明書を置き換えます。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store vpxd-extension --alias vpxd-extension
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store vpxd-extension --alias vpxd-extension --cert new-vpxd-extension.crt --key vpxd-extension-key.priv
      
    4. 各ノードの vsphere-webclient ソリューション ユーザー証明書を置き換えます。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store vsphere-webclient --alias vsphere-webclient
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store vsphere-webclient --alias vsphere-webclient --cert new-vsphere-webclient.crt --key vsphere-webclient-key.priv
      
    5. 各ノードの wcp ソリューション ユーザー証明書を置き換えます。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store wcp --alias wcp
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store wcp --alias wcp --cert new-wcp.crt --key wcp-key.priv
      
  4. 新しいソリューション ユーザー証明書を使用して VMware ディレクトリ サービス (vmdir) を更新します。vCenter Single Sign-On 管理者パスワードを求められます。
    1. dir-cli service list を実行し、ソリューション ユーザーごとに一意のサービス ID サフィックスを取得します。このコマンドは、vCenter Server システム上で実行できます。
      /usr/lib/vmware-vmafd/bin/dir-cli service list
      output:
      1. machine-623bef28-0311-436e-b21f-6e0d39aa5179
      2. vsphere-webclient-623bef28-0311-436e-b21f-6e0d39aa5179
      3. vpxd-623bef28-0311-436e-b21f-6e0d39aa5179
      4. vpxd-extension-623bef28-0311-436e-b21f-6e0d39aa5179
      5. hvc-623bef28-0311-436e-b21f-6e0d39aa5179
      6. wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e
      注: 大規模なデプロイで、ソリューション ユーザー証明書をリストする場合は、 dir-cli list の出力にすべてのノードのソリューション ユーザーが含まれます。 vmafd-cli get-machine-id --server-name localhost を実行して、各ホストのローカル マシン ID を検索します。各ソリューション ユーザーの名前には、マシン ID が含まれています。
    2. vCenter Server ノードの vmdir にあるマシン証明書を置き換えます。たとえば、machine-6fd7f140-60a9-11e4-9e28-005056895a69 が vCenter Server のマシン ソリューション ユーザーの場合、以下のコマンドを実行します。
      /usr/lib/vmware-vmafd/bin/dir-cli service update --name machine-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-machine.crt
    3. 各ノードの vmdir にある vpxd ソリューション ユーザー証明書を置き換えます。たとえば、vpxd-6fd7f140-60a9-11e4-9e28-005056895a69 が vpxd ソリューション ユーザー ID の場合、以下のコマンドを実行します。
      /usr/lib/vmware-vmafd/bin/dir-cli service update --name vpxd-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-vpxd.crt
    4. 各ノードの vmdir にある vpxd-extension ソリューション ユーザー証明書を置き換えます。たとえば、vpxd-extension-6fd7f140-60a9-11e4-9e28-005056895a69 が vpxd-extension ソリューション ユーザー ID の場合、以下のコマンドを実行します。
      /usr/lib/vmware-vmafd/bin/dir-cli update --name vpxd-extension-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-vpxd-extension.crt
      
    5. 各ノードの vsphere-webclient ソリューション ユーザー証明書を置き換えます。たとえば、vsphere-webclient-6fd7f140-60a9-11e4-9e28-005056895a69 が vsphere-webclient ソリューション ユーザー ID の場合、以下のコマンドを実行します。
      /usr/lib/vmware-vmafd/bin/dir-cli service update --name vsphere-webclient-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-vsphere-webclient.crt
      
    6. 各ノードの wcp ソリューション ユーザー証明書を置き換えます。たとえば、wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e が wcp ソリューション ユーザー ID の場合、以下のコマンドを実行します。
      /usr/lib/vmware-vmafd/bin/dir-cli service update --name wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e --cert new-wcp.crt
      

次のタスク

vCenter Server ノードのすべてのサービスを再起動します。