您可以使用一组 CLI 管理 VMCA (VMware Certificate Authority)、VECS(VMware Endpoint 证书存储)、VMware Directory Service (vmdir) 和 Security Token Service (STS) 证书。vSphere Certificate Manager 实用程序也支持许多相关任务,但手动证书管理和管理其他服务需要使用 CLI。

您通常使用 SSH 连接到设备 shell,访问 CLI 工具以管理证书和关联服务。有关详细信息,请参见 VMware 知识库文章,网址为 https://kb.vmware.com/s/article/2100508

手动替换 vSphere 证书提供了关于使用 CLI 命令替换证书的示例。

表 1. 用于管理证书和关联服务的 vSphere CLI 工具
CLI 描述 请参见
certool 生成并管理证书和密钥。属于 VMCAD(VMware 证书管理服务)的一部分。

certool 初始化命令参考

vecs-cli 管理 VMware 证书存储实例的内容。属于 VMware Authentication Framework 守护进程 (VMAFD) vecs-cli 命令参考
dir-cli 在 VMware Directory Service 中创建并更新证书。属于 VMAFD。 dir-cli 命令参考
sso-config.sh 管理 STS 证书。 命令行帮助。输入不带任何选项的 sso-config.sh 将显示命令行帮助。
service-control 启动或停止服务,例如,在证书替换工作流中。

在运行其他 CLI 命令之前,运行此命令以停止服务。

vSphere CLI 位置

默认情况下,在以下位置查找 CLI。

/usr/lib/vmware-vmafd/bin/vecs-cli
/usr/lib/vmware-vmafd/bin/dir-cli
/usr/lib/vmware-vmca/bin/certool
/opt/vmware/bin/sso-config.sh
注: service-control 命令不要求您指定路径。

运行 vSphere CLI 所需的特权

所需的特权取决于您使用的 CLI 以及要运行的命令。例如,对于大多数证书管理操作,您必须是本地 vCenter Single Sign-On 域 (vsphere.local) 的管理员。有些命令可供所有用户使用。

dir-cli
必须是本地域(默认为 vsphere.local)的管理员组成员才能运行 dir-cli 命令。如果不指定用户名和密码,系统将提示您输入本地 vCenter Single Sign-On 域的管理员(默认为 [email protected])的密码。
vecs-cli
最初,只有存储所有者和拥有完整访问特权的用户才能访问存储。管理员组中的用户具有完整访问权限。
MACHINE_SSL_CERT 和 TRUSTED_ROOTS 存储属于特殊存储。只有 root 用户或管理员用户(取决于安装类型)才拥有完全访问权限。
certool
大多数 certool 命令需要该用户是管理员组的成员。所有用户可以运行以下命令。
  • genselfcacert
  • initscr
  • getdc
  • waitVMDIR
  • waitVMCA
  • genkey
  • viewcert

更改 certool 配置选项

运行 certool --gencert 或某些其他证书初始化或管理命令时,命令会读取配置文件中的所有值。可以在命令行中编辑现有文件,使用 -–config=<file name> 选项替代默认配置文件,或者替代值。

默认情况下,配置文件 certool.cfg 位于 /usr/lib/vmware-vmca/share/config/ 目录中。

文件包含具有以下默认值的多个字段:

Country = US
Name= Acme
Organization = AcmeOrg
OrgUnit = AcmeOrg Engineering
State = California 
Locality = Palo Alto
IPAddress = 127.0.0.1	
Email = [email protected]
Hostname = server.acme.com
注: OU (organizationalUnitName) 字段不再为必填字段。
如下所示,通过在命令行中指定已修改的文件,或者通过在命令行中替代单个值,可以更改这些值。
  • 创建配置文件的副本,然后编辑该文件。使用 --config命令行选项指定该文件。指定完整路径,避免路径名称问题。
  • /usr/lib/vmware-vmca/bin/certool -–gencert --config /tmp/myconfig.cfg
  • 在命令行中替代单个值。例如,要替代局部性,请运行以下命令:
    /usr/lib/vmware-vmca/bin/certool -–gencert -–privkey=private.key –-Locality="Mountain View" 
指定 --Name 以替换证书的主体名称的 CN 字段。
  • 对于解决方案用户证书,按照约定,该名称为 <sol_user name>@<domain>,但如果在环境中使用其他约定,则可以更改该名称。
  • 对于计算机 SSL 证书,使用计算机的 FQDN。

    VMCA 仅允许使用一个 DNSName(在 Hostname 字段中),但不允许使用其他任何别名选项。如果 IP 地址由用户指定,则也会存储在 SubAltName 中。

使用 --Hostname 参数指定证书的 SubAltName 的 DNSName。