如果 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
    
    在只有一個根憑證的最單純情況下,輸出會類似下列內容:
    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 中的 TRUSTED_ROOTS 存放區以及 vmdir (VMware Directory Service)。
    /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 的複本。
    您可以在 /usr/lib/vmware-vmca/share/config/ 目錄中找到 certool.cfg 檔案。
  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.privssl-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 憑證取代為自訂憑證。此一混合式方法可滿足客戶安全性團隊的需求。
  • 這些憑證位於 Proxy 後方,或屬於自訂憑證。
  • 不使用任何中繼 CA。

可以取代機器解決方案使用者憑證以及每個 vCenter Server 系統上的解決方案使用者憑證。

備註: 當您列出大型部署中的解決方案使用者憑證時, dir-cli list 的輸出會包含所有節點上的所有解決方案使用者。請執行 vmafd-cli get-machine-id --server-name localhost 以找出每台主機的本機機器識別碼。每個解決方案使用者名稱都包含機器識別碼。

必要條件

準備好停止所有服務,並啟動處理憑證傳播和儲存的服務。

程序

  1. 製作一份 certool.cfg 的複本,移除名稱、IP 位址、DNS 名稱和電子郵件欄位,然後重新命名該檔案 (例如重新命名為 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 
    
    您可以使用取代憑證時返回的唯一識別碼。輸入和輸出內容可能如下。
    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 以找出每台主機的本機機器識別碼。每個解決方案使用者名稱都包含機器識別碼。
  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 參數必須是唯一的。包含解決方案使用者存放區的名稱,可讓您輕鬆辨識憑證與解決方案使用者之間的對應關係。在每種情況下,範例皆包含名稱,例如 vpxdvpxd-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 Directory Service (vmdir)。系統會提示您輸入 vCenter Single Sign-On 管理員密碼。
    1. 執行 dir-cli service list,為每個解決方案使用者取得唯一的服務識別碼尾碼。在 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 以找出每台主機的本機機器識別碼。每個解決方案使用者名稱都包含機器識別碼。
    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 解決方案使用者識別碼,請執行此命令:
      /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 解決方案使用者識別碼,請執行此命令:
      /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 解決方案使用者識別碼,請執行此命令:
      /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 解決方案使用者識別碼,請執行此命令:
      /usr/lib/vmware-vmafd/bin/dir-cli service update --name wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e --cert new-wcp.crt
      

下一步

重新啟動每個 vCenter Server 節點上的所有服務。