在生成新的 VMCA 签名根证书后,可以替换您环境中的所有计算机 SSL 证书。

每台计算机都必须拥有可用于与其他服务进行安全通信的计算机 SSL 证书。在多节点部署中,必须在每个节点上运行计算机 SSL 证书生成命令。使用 --server 参数从具有外部 Platform Services ControllervCenter Server 指向 Platform Services Controller

前提条件

准备好停止所有服务,启动处理证书传播和存储的服务。

过程

  1. 为需要新证书的每台计算机复制一份 certool.cfg
    可以在以下位置找到 certool.cfg
    操作系统 路径
    Windows C:\Program Files\VMware\vCenter Server\vmcad
    Linux /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. 停止所有服务,启动处理证书创建、传播和存储的服务。
    服务名称在 Windows 和 vCenter Server Appliance 上有所不同。
    注: 如果您的环境使用外部 Platform Services Controller,则不必停止和启动 vCenter Server 节点上的 VMware Directory Service (vmdird) 和 VMware Certificate Authority (vmcad)。这些服务在 Platform Services Controller 上运行。
    Windows
    service-control --stop --all
    service-control --start VMWareAfdService
    service-control --start VMWareDirectoryService
    service-control --start VMWareCertificateService
    
    vCenter Server Appliance
    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-<PSC-FQDN-example>
    Organization = <my_company>
    OrgUnit = <my_company Engineering>
    State = <my_state> 
    Locality = <mytown>
    Hostname = <FQDN>
  2. 为计算机 SSL 证书生成密钥对。在每个管理节点和 Platform Services Controller 节点上运行此命令;不需要 --server 选项。
    C:\>"C:\Program Files\VMware\vCenter Server\vmcad\"certool --genkey --privkey=ssl-key.priv --pubkey=ssl-key.pub
    

    将在当前目录中创建 ssl-key.privssl-key.pub 文件。

  3. 生成新的计算机 SSL 证书。此证书为 VMCA 签名证书。如果将 VMCA root 证书替换为自定义证书,则 VMCA 会对整个链中的所有证书进行签名。
    • Platform Services Controller 节点或嵌入式安装中:
      C:\>"C:\Program Files\VMware\vCenter Server\vmcad\"certool --gencert --cert=new-vmca-ssl.crt --privkey=ssl-key.priv --config=ssl-config.cfg
    • vCenter Server 中(外部安装):
      C:\>"C:\Program Files\VMware\vCenter Server\vmcad\"certool --gencert --cert=new-vmca-ssl.crt --privkey=ssl-key.priv --config=ssl-config.cfg --server=<psc-ip-or-fqdn>

    将在当前目录中创建 new-vmca-ssl.crt 文件。

  4. (可选)列出 VECS 的内容。
    "C:\Program Files\VMware\vCenter Server\vmafdd\" vecs-cli store list
    • Platform Services Controller 中的输出示例:
      MACHINE_SSL_CERT
      TRUSTED_ROOTS
      TRUSTED_ROOT_CRLS
      machine
    • vCenter Server 中的输出示例:
      output (on vCenter):
      MACHINE_SSL_CERT
      TRUSTED_ROOTS
      TRUSTED_ROOT_CRLS
      machine
      vpxd
      vpxd-extension
      vsphere-webclient
      sms
  5. 将 VECS 中的计算机 SSL 证书替换为新的计算机 SSL 证书。--store--alias 值必须与默认名称完全匹配。
    • Platform Services Controller 中,请运行以下命令以更新 MACHINE_SSL_CERT 存储中的计算机 SSL 证书。
      C:\>"C:\Program Files\VMware\vCenter Server\vmafdd\"vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT
      C:\>"C:\Program Files\VMware\vCenter Server\vmafdd\"vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert new-vmca-ssl.crt --key ssl-key.priv
      
    • 在每个管理节点或嵌入式部署中,请运行以下命令以更新 MACHINE_SSL_CERT 存储中的计算机 SSL 证书。由于每个计算机具有不同的 FQDN,因此必须单独更新每个计算机的证书。
      C:\>"C:\Program Files\VMware\vCenter Server\vmafdd\"vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT
      C:\>"C:\Program Files\VMware\vCenter Server\vmafdd\"vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert new-vmca-ssl.crt --key ssl-key.priv
      

下一步做什么

您还可以替换 ESXi 主机的证书。请参见《vSphere 安全性》出版物。

在多节点部署中替换根证书后,必须在所有具有外部 Platform Services ControllervCenter Server 节点上重新启动服务。