将 VMCA 证书替换为自定义证书的第一步是生成 CSR,发送要签名的 CSR。然后,将签名证书作为根证书添加到 VMCA。

可以使用证书管理器实用程序或其他工具生成 CSR。CSR 必须满足以下要求:
  • 密钥大小:2048 位或更大
  • PEM 格式。VMware 支持 PKCS8 和 PKCS1(RSA 密钥)。密钥添加到 VECS 后,会转换为 PKCS8。
  • x509 版本 3
  • 如果您当前使用的是自定义证书,对于根证书,CA 扩展必须设置为 true,并且证书签名必须在要求列表中。
  • 必须启用 CRL 签名。
  • “增强型密钥用法”可以为空或包含服务器身份验证。
  • 对证书链的长度没有明确限制。VMCA 使用 OpenSSL 默认设置,即 10 个证书。
  • 不支持包含通配符或多个 DNS 名称的证书。
  • 不能创建 VMCA 的附属 CA。

    请参见 http://kb.vmware.com/kb/2112009 中的 VMware 知识库文章,《在 vSphere 6.0 中创建 Microsoft 证书颁发机构模板以创建 SSL 证书》以获取使用 Microsoft 证书颁发机构的示例。

替换根证书时,VMCA 会验证以下证书属性:
  • 密钥大小:2048 位或更多
  • 密钥使用:证书签名
  • 基本限制:主体类型 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. 停止所有服务,启动处理证书创建、传播和存储的服务。
    服务名称在 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
    
  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
    每 30 秒进行一次 vmdir 节点之间的复制。无需将根证书显式添加到 VECS,因为 VECS 会每 5 分钟轮询 vmdir 中的新根证书文件。
  6. (可选) 如有必要,可以强制刷新 VECS。
    vecs-cli force-refresh
  7. 重新启动所有服务。
    service-control --start --all
    

示例: 替换根证书

使用 certool 命令和 --rootca选项将 VMCA 根证书替换为自定义 CA 根证书。

C:\>"C:\Program Files\VMware\vCenter Server\vmcad\certool" --rootca --cert=C:\custom-certs\root.pem -–privkey=C:\custom-certs\root.key
运行此命令时,会执行以下操作:
  • 将新的自定义根证书添加到文件系统中的证书位置。
  • 将自定义根证书附加到 VECS 中的 TRUSTED_ROOTS 存储中。
  • 将自定义根证书添加到 vmdir。

下一步做什么

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