可以使用 CLI 将 VMCA 根证书替换为证书链中包括 VMCA 的第三方 CA 签名证书。从今往后,VMCA 生成的所有证书都将包括完整链。可以将现有证书替换为新生成的证书。
如果使用 VMCA 作为中间 CA 或使用自定义证书,复杂性可能会显著提高,安全可能会受到负面影响,运营风险可能会不必要地提高。有关管理 vSphere 环境内的证书的详细信息,请参见标题为“New Product Walkthrough - Hybrid vSphere SSL Certificate Replacement”的博客帖子,网址为 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 知识库文章《在 vSphere 6.x 中创建 Microsoft 证书颁发机构模板以创建 SSL 证书》,网址为 https://kb.vmware.com/s/article/2112009。
- 密钥大小:2048 位(最小值)到 8192 位(最大值)。
- 密钥使用:证书签名
- 基本限制:主体类型 CA
过程
示例: 替换根证书
使用带 --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>。
过程
示例: 替换计算机 SSL 证书(VMCA 为中间 CA)
- 为 SSL 证书创建配置文件,并在当前目录中将其保存为 ssl-config.cfg。
Country = US Name = vmca-<FQDN-example> Organization = VMware OrgUnit = VMware Engineering State = California Locality = Palo Alto Hostname = <FQDN>
- 为计算机 SSL 证书生成密钥对。在包含以增强型链接模式配置连接的多个 vCenter Server 实例的部署中,在每个 vCenter Server 节点上运行以下命令。
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=ssl-key.priv --pubkey=ssl-key.pub
将在当前目录中创建 ssl-key.priv 和 ssl-key.pub 文件。
- 生成新的计算机 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 文件。
- (可选)列出 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
- vCenter Server 中的输出示例:
- 将 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
- 在每个 vCenter Server 上,运行以下命令以更新 MACHINE_SSL_CERT 存储中的计算机 SSL 证书。由于每个计算机具有不同的 FQDN,因此必须单独更新每个计算机的证书。
使用 CLI 替换解决方案用户证书(中间 CA)
替换计算机 SSL 证书后,可以使用 CLI 替换解决方案用户证书。
- 证书位于代理后面或是自定义证书。
- 未使用中间 CA。
替换每个 vCenter Server 系统上的计算机解决方案用户证书和解决方案用户证书。
前提条件
每个解决方案用户证书必须具有不同的 Subject。例如,考虑包含解决方案用户名(如 vpxd)或其他唯一标识符。
过程
示例: 替换解决方案用户证书(中间 CA)
- 在增强型链接模式配置中的每个 vCenter Server 节点上,为每个解决方案用户生成一个公钥/私钥对,其中包括为计算机解决方案用户生成一个密钥对以及为每个其他解决方案用户(vpxd、vpxd-extension、vsphere-webclient、wcp)生成一个密钥对。
- 为计算机解决方案用户生成密钥对。
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=machine-key.priv --pubkey=machine-key.pub
- 为每个节点上的 vpxd 解决方案用户生成密钥对。
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=vpxd-key.priv --pubkey=vpxd-key.pub
- 为每个节点上的 vpxd-extension 解决方案用户生成密钥对。
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=vpxd-extension-key.priv --pubkey=vpxd-extension-key.pub
- 为每个节点上的 vsphere-webclient 解决方案用户生成密钥对。
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=vsphere-webclient-key.priv --pubkey=vsphere-webclient-key.pub
- 为每个节点上的 wcp 解决方案用户生成密钥对。
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=wcp-key.priv --pubkey=wcp-key.pub
- 为计算机解决方案用户生成密钥对。
- 为每个 vCenter Server 节点上的计算机解决方案用户以及每个其他解决方案用户(vpxd、vpxd-extension、vsphere-webclient、wcp)生成由新的 VMCA 根证书签名的解决方案用户证书。
注: --Name 参数必须唯一。包括解决方案用户存储的名称,可便于查看证书与解决方案用户之间的映射关系。在任何一种情况下,该示例都包括此名称,例如 vpxd或 vpxd-extension。
- 创建 /usr/lib/vmware-vmca/share/config/certool.cfg 文件的一个副本,然后根据需要修改或移除名称、IP 地址、DNS 名称和电子邮件地址字段,并将该文件重命名为类似于 sol_usr.cfg 的名称。
- 为每个节点上的计算机解决方案用户生成证书。
/usr/lib/vmware-vmca/bin/certool --gencert --cert=new-machine.crt --privkey=machine-key.priv --Name=machine --config sol_usr.cfg
- 为每个节点上的 vpxd 解决方案用户生成证书。
/usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vpxd.crt --privkey=vpxd-key.priv --Name=vpxd --config sol_usr.cfg
- 为每个节点上的 vpxd-extension 解决方案用户生成证书。
/usr/lib/vmware-vmca/bin/certool --gencert --cert=new-vpxd-extension.crt --privkey=vpxd-extension-key.priv --Name=vpxd-extension --config sol_usr.cfg
- 通过运行以下命令为每个节点上的 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
- 通过运行以下命令为每个节点上的 wcp 解决方案用户生成证书。
/usr/lib/vmware-vmca/bin/certool --gencert --cert=new-wcp.crt --privkey=wcp-key.priv --Name=wcp --config sol_usr.cfg
- 将 VECS 中的解决方案用户证书替换为新的解决方案用户证书。
注: --store 和 --alias 参数必须与服务的默认名称完全匹配。
- 替换每个节点上的计算机解决方案用户证书:
/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
- 替换每个节点上的 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
- 替换每个节点上的 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
- 替换每个节点上的 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
- 替换每个节点上的 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
- 替换每个节点上的计算机解决方案用户证书:
- 使用新的解决方案用户证书更新 VMware Directory Service (vmdir)。系统将提示您输入 vCenter Single Sign-On 管理员密码。
- 运行 /usr/lib/vmware-vmafd/bin/dir-cli service list 可获取每个解决方案用户的唯一服务 ID 后缀。可以在 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 以查找每个主机的本地计算机 ID。每个解决方案用户名称均包括计算机 ID。 - 替换每个 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
- 替换每个节点上的 vmdir 中的 vpxd 解决方案用户证书。例如,如果 vpxd-6fd7f140-60a9-11e4-9e28-005056895a69 为 vpxd 解决方案用户 ID,请运行此命令:
/usr/lib/vmware-vmafd/bin/dir-cli service update --name vpxd-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-vpxd.crt
- 替换每个节点上的 vmdir 中的 vpxd-extension 解决方案用户证书。例如,如果 vpxd-extension-6fd7f140-60a9-11e4-9e28-005056895a69 为 vpxd-extension 解决方案用户 ID,请运行此命令:
/usr/lib/vmware-vmafd/bin/dir-cli service update --name vpxd-extension-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-vpxd-extension.crt
- 替换每个节点上的 vsphere-webclient 解决方案用户证书。例如,如果 vsphere-webclient-6fd7f140-60a9-11e4-9e28-005056895a69 为 vsphere-webclient 解决方案用户 ID,请运行此命令:
/usr/lib/vmware-vmafd/bin/dir-cli service update --name vsphere-webclient-6fd7f140-60a9-11e4-9e28-005056895a69 --cert new-vsphere-webclient.crt
- 替换每个节点上的 wcp 解决方案用户证书。例如,如果 wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e 是 wcp 解决方案用户 ID,请运行以下命令:
/usr/lib/vmware-vmafd/bin/dir-cli service update --name wcp-1cbe0a40-e4ce-4378-b5e7-9460e2b8200e --cert new-wcp.crt
- 运行 /usr/lib/vmware-vmafd/bin/dir-cli service list 可获取每个解决方案用户的唯一服务 ID 后缀。可以在 vCenter Server 系统上运行以下命令。