将 VMCA 证书替换为自定义证书的第一步是生成 CSR、发送 CSR 以进行签名并将签名证书作为 root 证书添加到 VMCA。

关于此任务

可以使用证书管理器实用程序或其他工具生成 CSR。CSR 必须满足以下要求:

  • 密钥大小:2048 位或更大

  • PEM 格式。VMware 支持 PKCS8 和 PKCS1(RSA 密钥)。密钥添加到 VECS 后,会转换为 PKCS8

  • x509 版本 3

  • 如果您当前使用的是自定义证书,对于 root 证书,CA 扩展必须设置为 true,并且证书签名必须在要求列表中。

  • 必须启用 CRL 签名。

  • Enhanced Key Usage 不得包含 Client AuthenticationServer Authentication

  • 环境中所有节点的时间必须同步。

  • 对证书链的长度没有明确限制。VMCA 使用 OpenSSL 默认设置,即十个证书。

  • VMCA 不支持包含通配符或多个 DNS 名称的证书。

  • 不能创建 VMCA 的附属 CA。

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

替换 root 证书时,VMCA 会验证以下证书属性:

  • 密钥大小:2048 位或更多

  • 密钥使用:证书签名

  • 基本限制:主体类型 CA

过程

  1. 生成 CSR 并将其发送给您的 CA。

    按照 CA 的说明进行操作。

  2. 准备包括签名的 VMCA 证书以及第三方 CA 或企业 CA 的完整 CA 链的证书文件,保存该文件,例如,另存为 rootca1.crt

    可以通过将 PEM 格式的所有 CA 证书复制到单个文件完成此过程。必须以 VMCA root 证书开头,并以 root 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 上有所不同。

    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 root CA。
    certool --rootca --cert=rootca1.crt --privkey=root1.key

    运行此命令时,会执行以下操作:

    • 将新的自定义 root 证书添加到文件系统中的证书位置。

    • 将自定义 root 证书附加到 VECS 中的 TRUSTED_ROOTS 库中(延迟后)。

    • 将自定义 root 证书附加到 vmdir(延迟后)。

  5. (可选) : 要将更改传播到 vmdir(VMware Directory Service)的所有实例,请将新 root 证书发布到 vmdir,并提供每个文件的完整文件路径。

    例如:

    dir-cli trustedcert publish --cert rootca1.crt

    每 30 秒进行一次 vmdir 节点之间的复制。无需将 root 证书显式添加到 VECS,因为 VECS 会每 5 分钟轮询 vmdir 中的新 root 证书文件。

  6. (可选) : 如有必要,可以强制刷新 VECS。
    vecs-cli force-refresh
  7. 重新启动所有服务。
    service-control --start --all
    

替换 root 证书

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

C:\>"C:\Program Files\VMware\vCenter Server\vmcad\certool" --rootca --cert=C:\custom-certs\root.pem -–privkey=C:\custom-certs\root.key

运行此命令时,会执行以下操作:

  • 将新的自定义 root 证书添加到文件系统中的证书位置。

  • 将自定义 root 证书附加到 VECS 中的 TRUSTED_ROOTS 库中。

  • 将自定义 root 证书添加到 vmdir。

下一步做什么

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