【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、扩展指纹等项目是否正常。
如果输出里大部分项目都是 VALID 或 OK,说明当前证书体系至少没有明显损坏;如果存在过期、权限异常或链路不一致,再继续处理更稳妥。
查看证书详细信息
除了总体健康状态,vCert 也支持按组件查看详细证书内容,比如:
- Machine SSL 证书
- Solution User 证书
- VECS 中的 CA 证书
- STS 签署证书
- VMCA 根证书
这一步适合用来确认证书的 CN、SAN、有效期和签发链是否符合当前环境。
替换或重置证书时的关注点
如果环境确认需要重置 VMCA 证书,操作时要特别注意这些字段:
IPADDRESSHOSTNAMEVMCA Name
如果当前 VCSA 是通过 IP 直接访问,没有独立 DNS 解析,就要按照实际访问方式填写,避免新证书生成后仍然与访问地址不匹配。
处理建议
实际执行时,建议按下面顺序来:
- 先检查现有证书状态和有效期。
- 再确认主机名、PNID、IP、DNS 解析方式是否一致。
- 最后再执行证书替换或重置。
如果替换过程中涉及重启服务或重建证书链,业务侧可能会短暂中断,因此不建议在高峰时段操作。
总结
这篇文章的重点不是“直接把证书换掉”,而是先确认当前环境,再使用 vCert 做有依据的处理。对 vCenter 这类核心组件来说,证书问题往往不只是一个到期时间,而是主机名、IP、PNID 和信任链一起决定的结果。