您可以使用 CLI 將 VMCA 根憑證取代為憑證鏈結中包含 VMCA 的第三方 CA 簽署憑證。然後,VMCA 產生的所有憑證都會包含完整鏈結。您可以將現有憑證取代為新產生的憑證。

如果您使用 VMCA 做為中繼 CA 或使用自訂憑證,可能會遇到非常複雜的問題,且可能對安全性產生負面影響,並且增加不必要的運作風險。如需有關在 vSphere 環境中管理憑證的詳細資訊,請參閱標題為〈新產品逐步解說 - 混合 vSphere SSL 憑證取代〉的部落格文章,網址為:http://vmware.com/go/hybridvmca

使用 CLI 取代根憑證 (中繼 CA)

將 VMCA 憑證取代為自訂憑證的第一個步驟,是產生 CSR 並傳送此 CSR 進行簽署。然後,使用 CLI 將簽署憑證作為根憑證新增到 VMCA。

您可以使用 Certificate Manager 公用程式或其他工具來產生 CSR。CSR 必須符合以下需求:

  • 金鑰大小:2048 位元 (下限) 至 8192 位元 (上限) (PEM 編碼)
  • PEM 格式。VMware 支援 PKCS8 和 PKCS1 (RSA 金鑰)。金鑰新增到 VECS 之後,會轉換為 PKCS8。
  • x509 第 3 版
  • 對於根憑證,CA 延伸必須設為 true,憑證簽署必須位於需求清單中。例如:
    basicConstraints        = critical,CA:true
    keyUsage                = critical,digitalSignature,keyCertSign
  • 必須啟用 CRL 簽署。
  • [延伸金鑰使用方法] 可以為空白或包含伺服器驗證。
  • 對憑證鏈結的長度無明確限制。VMCA 預設使用 OpenSSL (為 10 個憑證)。
  • 不支援含萬用字元或多個 DNS 名稱的憑證。
  • 您無法建立 VMCA 的附屬 CA。

    如需使用 Microsoft 憑證授權機構的範例,請參閱 VMware 知識庫文章:Creating a Microsoft Certificate Authority Template for SSL certificate creation in vSphere 6.x (在 vSphere 6.x 中建立 Microsoft 憑證授權機構範本以建立 SSL 憑證),網址為 https://kb.vmware.com/s/article/2112009

備註: vSphere 的 FIPS 憑證僅驗證 2048 位元和 3072 位元的 RSA 金鑰大小。
當您取代根憑證時,VMCA 會驗證下列憑證屬性:
  • 金鑰大小:2048 位元 (下限) 至 8192 位元 (上限)。
  • 金鑰使用方式:憑證簽署
  • 基本限制:主體類型 CA

程序

  1. 產生 CSR 並將其傳送至您的 CA。
    依照 CA 指示進行。
  2. 準備包含已簽署之 VMCA 憑證以及第三方 CA 或企業 CA 之完整 CA 鏈結的憑證檔案。儲存檔案,例如儲存為 rootca1.crt
    您可以將所有 PEM 格式的 CA 憑證複製到單一檔案,以完成此步驟。您可以從 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 Directory Service) 執行個體,請將新的根憑證發佈到 vmdir,並提供每個檔案的完整檔案路徑。
    例如,如果憑證鏈結中只有一個憑證:
    dir-cli trustedcert publish --cert rootca1.crt
    如果憑證鏈結中具有多個憑證:
    dir-cli trustedcert publish --cert rootcal.crt --chain
    vmdir 節點間的複寫每隔 30 秒會進行一次。您不需要明確將根憑證新增到 VECS,因為 VECS 會每隔 5 分鐘輪詢 vmdir 是否有新的根憑證檔案。
  6. (選擇性) 如有必要,您可以強制重新整理 VECS。
    vecs-cli force-refresh
  7. 重新啟動所有服務。
    service-control --start --all

範例: 取代根憑證

使用具有 --rootca 選項的 certool 命令,將 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 憑證,SubjectAltName 必須包含 DNS Name=<Machine FQDN>

程序

  1. 為每部需要新憑證的機器製作一份 certool.cfg 的複本。
    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.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
      

使用 CLI 取代解決方案使用者憑證 (中繼 CA)

取代機器 SSL 憑證後,可以使用 CLI 取代解決方案使用者憑證。

許多 VMware 客戶未取代解決方案使用者憑證。僅將機器 SSL 憑證取代為自訂憑證。此一混合式方法可滿足客戶安全性團隊的需求。
  • 這些憑證位於 Proxy 後方,或屬於自訂憑證。
  • 不使用任何中繼 CA。

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

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

必要條件

每個解決方案使用者憑證必須具有不同的 Subject。例如,您可以考慮加入解決方案使用者名稱 (例如 vpxd) 或其他唯一識別碼。

程序

  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. 找到每個解決方案使用者的名稱。
    /usr/lib/vmware-vmafd/bin/dir-cli service list 
    
    您可以使用取代憑證時返回的唯一識別碼。輸入和輸出內容可能如下。
    /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 以找出每台主機的本機機器識別碼。每個解決方案使用者名稱都包含機器識別碼。
  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 參數必須是唯一的。包含解決方案使用者存放區的名稱,可讓您輕鬆辨識憑證與解決方案使用者之間的對應關係。在每種情況下,範例皆包含名稱,例如 vpxdvpxd-extension
    1. 建立 /usr/lib/vmware-vmca/share/config/certool.cfg 檔案的一個複本,然後根據需要修改或移除名稱、IP 位址、DNS 名稱和電子郵件地址欄位,並將該檔案重新命名為類似於 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 Directory Service (vmdir)。系統會提示您輸入 vCenter Single Sign-On 管理員密碼。
    1. 執行 /usr/lib/vmware-vmafd/bin/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
      備註: 當您列出大型部署中的解決方案使用者憑證時, /usr/lib/vmware-vmafd/bin/dir-cli list 的輸出會包含所有節點上的所有解決方案使用者。請執行 /usr/lib/vmware-vmafd/bin/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 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 解決方案使用者識別碼,請執行此命令:
      /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