Home

【vCenter】使用 vCert 脚本替换 vCenter 过期证书

这篇文章记录使用 vCert 工具检查并处理 vCenter 证书问题的过程。操作会影响整套证书体系,开始前务必先为 VCSA 做快照或备份,避免处理失败后无法回退。

处理前说明

vCert 适合做这几件事:

  • 检查当前证书状态
  • 查看证书详细信息
  • 管理或重置 VMCA 证书
  • 重启相关服务

正式操作前,建议先确认当前环境到底是通过 FQDN 访问还是通过 IP 访问,后续填写证书字段时会直接影响结果。

上传并准备脚本

先把 vCert 压缩包上传到 vCenter,常用目录可以选 /root/tmp

如果使用 WinSCP 上传时出现 too large packet error,通常是因为 root 的默认 shell 被改成了 appliancesh。这种情况下,可以先临时切回 bash

chsh -s /bin/bash root

如果后面还要恢复 Appliance Shell,可以执行:

chsh -s /bin/appliancesh root

脚本上传完成后,解压并赋权:

unzip -q vCert-6.0.1-20250516.zip
cd vCert-6.0.1-20250516
chmod +x vCert.py

启动 vCert

进入脚本目录后直接执行:

./vCert.py

首次运行时,根据提示确认风险即可。

先检查证书状态

在真正替换证书之前,建议先把当前证书有效期和信任状态过一遍,确认问题范围。

用 vecs-cli 看有效期

for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

这一步主要用于快速确认各个证书库里的证书是否已经接近过期。

在 vCert 菜单中检查

脚本菜单里可以直接选择“检查当前证书状态”,输入 administrator@vsphere.local 账号后,就能看到 Machine SSL、Solution User、STS、VMCA、扩展指纹等项目是否正常。

如果输出里大部分项目都是 VALIDOK,说明当前证书体系至少没有明显损坏;如果存在过期、权限异常或链路不一致,再继续处理更稳妥。

查看证书详细信息

除了总体健康状态,vCert 也支持按组件查看详细证书内容,比如:

  • Machine SSL 证书
  • Solution User 证书
  • VECS 中的 CA 证书
  • STS 签署证书
  • VMCA 根证书

这一步适合用来确认证书的 CNSAN、有效期和签发链是否符合当前环境。

替换或重置证书时的关注点

如果环境确认需要重置 VMCA 证书,操作时要特别注意这些字段:

  • IPADDRESS
  • HOSTNAME
  • VMCA Name

如果当前 VCSA 是通过 IP 直接访问,没有独立 DNS 解析,就要按照实际访问方式填写,避免新证书生成后仍然与访问地址不匹配。

处理建议

实际执行时,建议按下面顺序来:

  1. 先检查现有证书状态和有效期。
  2. 再确认主机名、PNID、IP、DNS 解析方式是否一致。
  3. 最后再执行证书替换或重置。

如果替换过程中涉及重启服务或重建证书链,业务侧可能会短暂中断,因此不建议在高峰时段操作。

总结

这篇文章的重点不是“直接把证书换掉”,而是先确认当前环境,再使用 vCert 做有依据的处理。对 vCenter 这类核心组件来说,证书问题往往不只是一个到期时间,而是主机名、IP、PNID 和信任链一起决定的结果。

VMware