本文记录一次 vCenter Server 证书过期导致 Web 客户端无法登录的完整修复过程,涵盖证书检查、hosts 配置修正及通过
certificate-manager批量重签证书的实操步骤。
背景与原理
VMware vCenter Server(VCSA)内部使用 VMware Certificate Authority(VMCA) 作为内置证书颁发机构,为 vCenter 的各个服务(如 vpxd、vsphere-ui、SSO 等)签发 SSL 证书。这些证书统一存储在 VECS(VMware Endpoint Certificate Store) 中,默认有效期为 2 年。
当证书过期后,会出现以下典型现象:
- Web 端(
https://<vCenter-IP>/ui)无法登录,浏览器提示证书错误或连接被拒绝; - 各服务之间因 TLS 握手失败而无法正常通信;
- 即使输入正确的账号密码,登录页也可能反复跳转或报超时。
因此,修复的核心思路是:确认哪些证书过期 → 确保主机名解析正确(证书绑定的是 FQDN)→ 通过官方工具重新生成并替换所有证书。
一、查看证书是否过期
首先登录 vCenter 的 SSH 控制台(或直接在控制台界面按 Alt+F1 启用 Shell),执行以下脚本遍历 VECS 中的所有证书存储,列出每个证书的别名和过期时间:
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do
echo STORE $i
sudo /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"
done
命令说明:
vecs-cli store list:列出 VECS 中所有的证书存储(store),常见的有MACHINE_SSL_CERT、TRUSTED_ROOTS、vpxd、vsphere-webclient等;vecs-cli entry list --store <名称> --text:以文本形式列出指定存储中的证书条目;egrep "Alias|Not After":只过滤出证书别名和到期时间,方便快速排查。
执行后对照 Not After 字段的日期,如果早于当前日期,说明该证书已过期。

二、查看主机名
证书是与 FQDN(完全限定域名) 绑定的,因此在重签之前必须确认 vCenter 的主机名配置正确。执行:
hostname -f
该命令输出 vCenter 的完整 FQDN,例如 photon-machine.local。请记下这个值,后续填写证书参数时需要用到。

三、编辑 hosts 文件
如果 /etc/hosts 中缺少 vCenter 自身的 FQDN 解析,证书生成过程中可能会因主机名无法解析而失败。编辑 hosts 文件:
vi /etc/hosts

确保文件中包含类似以下两行,把 IP 和主机名替换成你实际环境的值:
127.0.0.1 localhost localhost.localdomain
172.16.1.111 photon-machine photon-machine.local
注意: 第二行需要同时包含短主机名(
photon-machine)和完整 FQDN(photon-machine.local),且 IP 地址必须是 vCenter 的管理 IP。
保存后,用 ping 验证 FQDN 是否能正常解析到本机:
ping -c 1 photon-machine.local

这里看到是可以 ping 通的,说明 hosts 配置生效。
四、使用 certificate-manager 重新生成证书
VMware 官方提供了 certificate-manager 工具,用于管理和替换 vCenter 的各类证书。执行:
/usr/lib/vmware-vmca/bin/certificate-manager

启动后会出现交互式菜单,提供多种证书管理选项。这里选择 8(Reset all Certificates,全部重置/更新证书),该选项会用 VMCA 重新签发并替换 vCenter 中所有的证书,适合证书大面积过期的场景。
操作过程中需要注意以下三个地方:
- 需要填写 vCenter 的 IP 地址;
- 主机名不能只写短主机名(如
photon-machine),必须填写完整 FQDN(如photon-machine.local),否则生成的证书与实际主机名不匹配,Web 端仍会报证书错误; - 提前查看或修复 hosts 文件,确保 FQDN 能正确解析。

原理补充: 证书的
Subject和Subject Alternative Name(SAN)字段中会写入主机名。客户端(浏览器或其他服务)在验证证书时,会比对访问地址与证书中的名称是否一致。如果只写了短主机名,而实际通过 FQDN 或 IP 访问,就会触发名称不匹配的安全警告。
在证书重新生成的过程中,vCenter 的相关服务会自动重启。建议另外开一个 SSH 窗口,实时监控所有服务的运行状态:
service-control --status --all

然后耐心等待结果。


当终端输出 100% successful 时,代表证书已全部重新部署完成。此时可以:
- 通过
https://<vCenter-IP>登录 Web 端验证是否恢复正常; - 再次执行第一步的证书检查命令,确认所有证书的
Not After日期已延长(默认有效期为 2 年)。
总结
| 步骤 | 关键操作 | 目的 |
|---|---|---|
| 1 | vecs-cli 遍历所有证书存储 | 确认证书是否过期及过期范围 |
| 2 | hostname -f | 获取正确的 FQDN |
| 3 | 编辑 /etc/hosts 并 ping 验证 | 确保 FQDN 能正确解析到本机 |
| 4 | certificate-manager 选 8 批量重签 | 用 VMCA 重新生成并替换所有证书 |
| 验证 | service-control --status --all + Web 登录 | 确认服务正常、证书有效期已更新 |
避坑提醒:
- 证书生成时务必填写完整 FQDN,不要只写短主机名;
- 操作前确保
/etc/hosts配置正确,否则可能导致证书部署失败; - 证书更新过程中服务会重启,建议在业务低峰期操作;
- 如果环境使用的是外部 CA 签发的证书(而非 VMCA 自签),则需要选择
certificate-manager中的其他选项,替换流程会有所不同。










