CLI を使用して、VMCA ルート証明書を、証明書チェーンに VMCA が含まれるサードパーティの CA 署名付き証明書に置き換えることができます。将来的に、VMCA によって生成されるすべての証明書には、完全な証明書チェーンが含められます。既存の証明書は、新しく生成された証明書に置き換えることができます。

VMCA を中間認証局として使用している場合、またはカスタム証明書を使用している場合は、複雑さが著しく高まり、セキュリティに悪影響が及ぶ可能性が生じて、運用上のリスクが不必要に増大することがあります。vSphere 環境内での証明書管理の詳細については、「New Product Walkthrough - Hybrid vSphere SSL Certificate Replacement」というブログ記事 (http://vmware.com/go/hybridvmca) を参照してください。

CLI を使用したルート証明書(中間 CA)の置き換え

カスタム証明書による VMware 認証局 (VMCA) 証明書の置き換えの最初の手順は、CSR を生成し、署名のために CSR を送信することです。続いて、CLI を使用して署名済みの証明書をルート証明書として VMware 認証局 (VMCA) に追加します。

Certificate Manager ユーティリティなどのツールを使用して CSR を生成できます。CSR は次の要件を満たす必要があります。

  • キー サイズ:2,048 ビット(最小)から 8,192 ビット(最大)(PEM エンコード)
  • PEM 形式。VMware では、PKCS8 および PKCS1(RSA キー)がサポートされます。VECS に追加されたキーは、PKCS8 に変換されます。
  • x509 バージョン 3
  • ルート証明書に対しては、認証局の拡張を true に設定する必要があり、証明書の署名を要件の一覧に含める必要があります。例:
    basicConstraints        = critical,CA:true
    keyUsage                = critical,digitalSignature,keyCertSign
  • CRL の署名は有効にしてください。
  • [拡張キー使用] は、空にするか、[サーバ認証] を指定します。
  • 証明書チェーンの長さに明示的な制限はありません。VMware 認証局 (VMCA) では、デフォルトで OpenSSL が使用されます。この場合、10 個の証明書となります。
  • ワイルドカードまたは複数の DNS 名を使用した証明書はサポートされていません。
  • VMCA の従属認証局は作成できません。

    Microsoft 認証局の使用例については、VMware ナレッジベースの記事「Creating a Microsoft Certificate Authority Template for SSL certificate creation in vSphere 6.x」(https://kb.vmware.com/s/article/2112009) を参照してください。

注: vSphere の FIPS 証明書は、2,048 ビットと 3,072 ビットの RSA キー サイズのみを検証します。
VMCA は、ルート証明書を置き換えるときに、証明書の次の属性を検証します。
  • キー サイズ:2,048 ビット(最小)から 8,192 ビット(最大)。
  • キーの使用:証明書の署名
  • 基本制約:サブジェクト タイプ CA

手順

  1. CSR を生成して、CA に送ります。
    CA の指示に従います。
  2. 署名済みの VMware 認証局 (VMCA) 証明書と、サード パーティ CA またはエンタープライズ CA の完全な CA チェーンを含む証明書ファイルを準備します。rootca1.crt などの名前でファイルを保存します。
    この手順は、PEM 形式のすべての CA 証明書を単一ファイルにコピーすることで行えます。VMware 認証局 (VMCA) ルート証明書から始まり、最終的にはルート CA PEM 証明書になります。例:
    -----BEGIN CERTIFICATE-----
    <Certificate of VMCA>
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    <Certificate of intermediary CA>
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    <Certificate of Root CA>
    -----END CERTIFICATE-----
  3. すべてのサービスを停止し、証明書の作成、伝達、およびストレージを処理するサービスを開始します。
    service-control --stop --all
    service-control --start vmafdd
    service-control --start vmdird
    service-control --start vmcad
    
  4. 既存の VMCA ルート CA を置き換えます。
    certool --rootca --cert=rootca1.crt --privkey=root1.key
    このコマンドを実行すると、次の処理が行われます。
    • ファイル システム内の証明書がある場所に、新しいカスタム ルート証明書が追加されます。
    • VECS の TRUSTED_ROOTS ストアに、カスタム ルート証明書が追加されます(一定時間の経過後)。
    • vmdir にカスタム ルート証明書が追加されます(一定時間の経過後)。
  5. (オプション) vmdir(VMware ディレクトリ サービス)のすべてのインスタンスに変更を伝達するには、新しいルート証明書を vmdir に発行し、各ファイルのフル パスを指定します。
    たとえば、チェーン内に証明書が 1 つしかない場合は、次のようになります。
    dir-cli trustedcert publish --cert rootca1.crt
    チェーン内に複数の証明書を持つ場合、次のようになります。
    dir-cli trustedcert publish --cert rootcal.crt --chain
    vmdir ノード間のレプリケーションは 30 秒おきに実行されます。VECS は vmdir に対する新しいルート証明書ファイルのポーリングを 5 分おきに実行するため、VECS にルート証明書を明示的に追加する必要はありません。
  6. (オプション) 必要な場合は、VECS の更新を強制できます。
    vecs-cli force-refresh
  7. すべてのサービスを再開します。
    service-control --start --all

例: ルート証明書の置き換え

certool コマンドに --rootca オプションを指定して、VMCA ルート証明書をカスタムの CA ルート証明書に置き換えます。

/usr/lib/vmware-vmca/bin/certool --rootca --cert=<path>/root.pem -–privkey=<path>/root.key
このコマンドを実行すると、次の処理が行われます。
  • ファイル システム内の証明書がある場所に、新しいカスタム ルート証明書が追加されます。
  • VECS の TRUSTED_ROOTS ストアに、カスタム ルート証明書が追加されます。
  • vmdir にカスタム ルート証明書が追加されます。

次のタスク

元の VMCA ルート証明書は証明書ストアから削除できます(会社のポリシーで求められている場合)。その場合、vCenter Single Sign-On 署名証明書を置き換える必要があります。コマンド ラインを使用した vCenter Server STS 証明書の置き換えを参照してください。

CLI を使用したマシン SSL 証明書(中間 CA)の置き換え

CA から署名付き証明書を受信したら、CLI を使用してそれを VMCA ルート証明書にし、すべてのマシン SSL 証明書を置き換えることができます。

これらの手順は、VMCA を認証局として使用する証明書を置き換える場合と基本的に同じです。ただし、この場合、VMCA はすべての証明書に完全な証明書チェーンで署名します。

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

前提条件

各マシン SSL 証明書の場合、SubjectAltNameDNS Name=<Machine FQDN> が含まれている必要があります。

手順

  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 machine42.crt --Name=Machine42_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.cert
    --key machine1.priv
  6. すべてのサービスを再開します。
    service-control --start --all

例: マシン SSL 証明書の置き換え(VMCA が中間 CA)

  1. SSL 証明書用の構成ファイルを作成し、そのファイルを現在のディレクトリに ssl-config.cfg として保存します。
    Country = US
    Name = vmca-<FQDN-example>
    Organization = VMware
    OrgUnit = VMware Engineering
    State = California 
    Locality = Palo Alto
    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
      

CLI を使用したソリューション ユーザー証明書(中間 CA)の置き換え

マシン SSL 証明書を置き換えたら、CLI を使用してソリューション ユーザー証明書を置き換えることができます。

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

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

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

前提条件

各ソリューション ユーザー証明書には異なる Subject が指定されている必要があります。たとえば、ソリューション ユーザー名(例: vpxd)などの一意の識別子を含めることができます。

手順

  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. 各ソリューション ユーザーの名前を検索します。
    /usr/lib/vmware-vmafd/bin/dir-cli service list 
    
    証明書を置き換えるときに返される一意の ID を使用できます。入力と出力は次にようになります。
    /usr/lib/vmware-vmafd/bin/dir-cli service list
    Enter password for [email protected]:
    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 インスタンスの展開では、 /usr/lib/vmware-vmafd/bin/dir-cli service list の出力にはすべてのノードのすべてのソリューション ユーザーが含まれます。 /usr/lib/vmware-vmafd/bin/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 内の証明書を置き換えます。
    ソリューション ユーザーに対して、その順序で証明書を追加する必要があります。例:
    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

例: ソリューション ユーザー証明書の置き換え(中間 CA)

  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/share/config/certool.cfg ファイルのコピーを 1 つ作成し、必要に応じて名前、IP アドレス、DNS 名、E メールの各フィールドを変更または削除して、ファイルの名前を sol_usr.cfg などに変更します。
    2. 各ノードのマシン ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-machine.crt --privkey=machine-key.priv --Name=machine --config sol_usr.cfg
    3. 各ノードの vpxd ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vpxd.crt --privkey=vpxd-key.priv --Name=vpxd --config sol_usr.cfg
      
    4. 各ノードの vpxd-extensions ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vpxd-extension.crt --privkey=vpxd-extension-key.priv --Name=vpxd-extension --config sol_usr.cfg
    5. 次のコマンドを実行して、各ノードの vsphere-webclient ソリューション ユーザーに証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vsphere-webclient.crt --privkey=vsphere-webclient-key.priv --Name=vsphere-webclient --config sol_usr.cfg
    6. 次のコマンドを実行して、各ノードで wcp ソリューション ユーザーの証明書を生成します。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=new-wcp.crt --privkey=wcp-key.priv --Name=wcp --config sol_usr.cfg
  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. /usr/lib/vmware-vmafd/bin/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
      注: 大規模なデプロイで、ソリューション ユーザー証明書をリストする場合は、 /usr/lib/vmware-vmafd/bin/dir-cli list の出力にすべてのノードのソリューション ユーザーが含まれます。 /usr/lib/vmware-vmafd/bin/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 service 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