如果公司策略有相关要求,则可以使用 CLI 将在 vSphere 中使用的某些或所有证书替换为第三方或企业 CA 签名的证书。如果执行了此操作,则 VMCA 将不在证书链中。您需要将所有 vCenter 证书存储在 VECS 中。

可以替换所有证书或使用混合解决方案。例如,可以考虑替换用于网络通信的所有证书,但保留 VMCA 签名的解决方案用户证书。解决方案用户证书仅适用于对 vCenter Single Sign-On 进行身份验证。vCenter Server 仅将解决方案用户证书用于内部通信。解决方案用户证书不用于外部通信。
注: 如果不需要使用 VMCA,则您必须负责亲自替换所有证书、使用证书置备新的组件以及跟踪证书过期情况。

即使您决定使用自定义证书,也仍可使用 VMware Certificate Manager 实用程序进行证书替换。请参见使用 Certificate Manager 将所有证书替换为自定义证书

如果在替换证书后 vSphere Auto Deploy 遇到问题,请参见 VMware 知识库文章,网址为 https://kb.vmware.com/s/article/2000988

使用 CLI 请求证书并导入自定义根证书

可以使用企业或第三方 CA 的自定义证书。第一步是使用 CLI 向证书颁发机构请求证书并将根证书导入 VMware 端点证书存储 (VECS)。

前提条件

证书必须满足以下要求:

  • 密钥大小:2048 位(最小长度)到 8192 位(最大长度)(PEM 编码)
  • PEM 格式。VMware 支持 PKCS8 和 PKCS1(RSA 密钥)。密钥添加到 VECS 后,会转换为 PKCS8。
  • x509 版本 3
  • 对于根证书,CA 扩展必须设置为 true,并且 cert 签名必须在要求列表中。
  • SubjectAltName 必须包含 DNS Name=<machine_FQDN>。
  • CRT 格式
  • 包含以下密钥用法:数字签名、密钥加密
  • 比当前时间早一天的开始时间。
  • CN(和 SubjectAltName)设置为 vCenter Server 清单中的 ESXi 主机的主机名(或 IP 地址)。
注: vSphere 的 FIPS 证书仅验证大小为 2048 位和 3072 位的 RSA 密钥。

过程

  1. 向企业或第三方证书提供商发送以下证书的证书签名请求 (CSR)。
    • 每个计算机具有一个计算机 SSL 证书。对于计算机 SSL 证书,SubjectAltName 字段必须包含完全限定域名 (DNS NAME=machine_FQDN)
    • (可选)每个节点具有五个解决方案用户证书。解决方案用户证书不需包括 IP 地址、主机名或电子邮件地址。每个证书必须具有不同的证书主体。

    通常,结果为信任链的 PEM 文件以及每个 vCenter Server 节点的签名 SSL 证书。

  2. 列出 TRUSTED_ROOTS 和计算机 SSL 存储。
    vecs-cli store list 
    
    1. 确保当前根证书和所有计算机 SSL 证书均为 VMCA 签名证书。
    2. 请记下“序列号”、“颁发者”和“主体 CN”字段。
    3. (可选) 使用 Web 浏览器,打开与将替换证书的节点的 HTTPS 连接,查看证书信息,并确保该信息与计算机 SSL 证书相匹配。
  3. 停止所有服务,启动处理证书创建、传播和存储的服务。
    service-control --stop --all
    service-control --start vmafdd
    service-control --start vmdird
    service-control --start vmcad
    
  4. 发布自定义 root 证书。
    dir-cli trustedcert publish --cert <my_custom_root>
    如果在命令行上不指定用户名和密码,系统会提示您。
  5. 重新启动所有服务。
    service-control --start --all

下一步做什么

如果公司策略需要,可以从证书存储中移除原始的 VMCA 根证书。如果执行此操作,则必须刷新 vCenter Single Sign-On 证书。请参见使用命令行替换 vCenter Server STS 证书

使用 CLI 将计算机 SSL 证书替换为自定义证书

收到自定义证书后,可以使用 CLI 替换每个计算机证书。

必须具有以下信息才能开始替换证书:
  • [email protected] 的密码
  • 有效的计算机 SSL 自定义证书(.crt 文件)
  • 有效的计算机 SSL 自定义密钥(.key 文件)
  • 有效的自定义根证书(.crt 文件)

前提条件

必须已从第三方或企业 CA 收到每个计算机的证书。

  • 密钥大小:2048 位(最小长度)到 8192 位(最大长度)(PEM 编码)
  • CRT 格式
  • x509 版本 3
  • SubjectAltName 必须包含 DNS Name=<machine_FQDN>。
  • 包含以下密钥用法:数字签名、密钥加密

在每个 vCenter Server 主机上执行以下步骤。

过程

  1. 备份当前的计算机 SSL 证书。
    /usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store MACHINE_SSL_CERT --alias __MACHINE_CERT > oldmachine.crt
    /usr/lib/vmware-vmafd/bin/vecs-cli entry getkey --store MACHINE_SSL_CERT --alias __MACHINE_CERT > oldmachinekey.key
  2. 登录到每个主机,然后将您从证书颁发机构接收的新的计算机证书添加到 VECS。
    所有主机都需要使用本地证书存储中的新证书来通过 SSL 进行通信。
    1. 删除现有证书。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT
    2. 添加新证书。
      /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert <cert-file-path> --key <key-file-path>
  3. 提取要替换的旧证书的哈希。
    openssl x509 -in <path_to_old_machinessl_certificate> -noout -sha1 -fingerprint

    将显示类似以下内容的输出:

    SHA1 Fingerprint=13:1E:60:93:E4:E6:59:31:55:EB:74:51:67:2A:99:F8:3F:04:83:88
  4. 手动更新 Lookup Service 注册端点。
    /usr/lib/vmware-lookupsvc/tools/ls_update_certs.py --url https://<vCenterServer_FQDN>/lookupservice/sdk --certfile <cert-file-path> --user '[email protected]' --password '<password>' --fingerprint <SHA1_hash_of_the_old_certificate_to_replace>

    如果在运行 ls_update_certs.py 时遇到问题,请参见 VMware 知识库文章,网址为 https://kb.vmware.com/s/article/95982

  5. 重新启动所有服务。
    service-control --stop --all && service-control --start --all